diff --git a/src/cache-base.ts b/src/cache-base.ts index ce035642..e47b7a4e 100644 --- a/src/cache-base.ts +++ b/src/cache-base.ts @@ -204,15 +204,27 @@ export class GradleStateCache { fs.writeFileSync(initScriptPath, initScriptContent) } - // Copy the toolchain definitions file to `~/.m2/toolchains.xml` (if the file doesn't already exist) + // Copy the default toolchain definitions to `~/.m2/toolchains.xml` + const toolchainContent = this.readResourceFileAsString('toolchains.xml') const m2dir = path.resolve(this.userHome, '.m2') const toolchainXmlTarget = path.resolve(m2dir, 'toolchains.xml') if (!fs.existsSync(toolchainXmlTarget)) { + // Write a new toolchains.xml file if it doesn't exist fs.mkdirSync(m2dir, {recursive: true}) - const toolchainContent = this.readResourceFileAsString('toolchains.xml') fs.writeFileSync(toolchainXmlTarget, toolchainContent) core.info(`Wrote default JDK locations to ${toolchainXmlTarget}`) + } else { + // Merge into an existing toolchains.xml file + const existingToolchainContent = fs.readFileSync(toolchainXmlTarget, 'utf8') + const appendedContent = toolchainContent.split("").pop()! + const mergedContent = existingToolchainContent.replace('', appendedContent) + + core.info(`Merged toolchains.xml`) + core.info(mergedContent) + + fs.writeFileSync(mergedContent, toolchainXmlTarget) + core.info(`Merged default JDK locations into ${toolchainXmlTarget}`) } }