diff --git a/sources/src/caching/gradle-user-home-utils.ts b/sources/src/caching/gradle-user-home-utils.ts
index 4d380336..0bc89aea 100644
--- a/sources/src/caching/gradle-user-home-utils.ts
+++ b/sources/src/caching/gradle-user-home-utils.ts
@@ -13,34 +13,37 @@ export function readResourceFileAsString(...paths: string[]): string {
* @VisibleForTesting
*/
export function getPredefinedToolchains(): string | null {
- const javaHomeEnvs: string[] = []
- for (const javaHomeEnvsKey in process.env) {
- if (javaHomeEnvsKey.startsWith('JAVA_HOME_')) {
- javaHomeEnvs.push(javaHomeEnvsKey)
- }
- }
+ // Get the version and path for each JAVA_HOME env var
+ const javaHomeEnvs = Object.entries(process.env)
+ .filter(([key]) => key.startsWith('JAVA_HOME_') && process.env[key])
+ .map(([key, value]) => ({
+ jdkVersion: key.match(/JAVA_HOME_(\d+)_/)?.[1] ?? null,
+ jdkPath: value as string
+ }))
+ .filter(env => env.jdkVersion !== null)
+
if (javaHomeEnvs.length === 0) {
return null
}
+
// language=XML
- let toolchainsXml = `
+ return `
-`
- for (const javaHomeEnv of javaHomeEnvs) {
- const version = javaHomeEnv.match(/JAVA_HOME_(\d+)_/)?.[1]!
- toolchainsXml += `
+${javaHomeEnvs
+ .map(
+ ({jdkVersion, jdkPath}) => `
jdk
- ${version}
+ ${jdkVersion}
- \${env.${javaHomeEnv}}
+ ${jdkPath}
- \n`
- }
- toolchainsXml += `\n`
- return toolchainsXml
+ `
+ )
+ .join('\n')}
+\n`
}
export function mergeToolchainContent(existingToolchainContent: string, preInstalledToolchains: string): string {
diff --git a/sources/test/jest/predefined-toolchains.test.ts b/sources/test/jest/predefined-toolchains.test.ts
index 4e4f01e2..637d9b94 100644
--- a/sources/test/jest/predefined-toolchains.test.ts
+++ b/sources/test/jest/predefined-toolchains.test.ts
@@ -39,7 +39,7 @@ describe('predefined-toolchains', () => {
8
- \${env.JAVA_HOME_8_X64}
+ /jdks/foo_8
@@ -48,7 +48,7 @@ describe('predefined-toolchains', () => {
11
- \${env.JAVA_HOME_11_X64}
+ /jdks/foo_11
@@ -57,7 +57,7 @@ describe('predefined-toolchains', () => {
21
- \${env.JAVA_HOME_21_ARM64}
+ /jdks/foo_21
@@ -81,7 +81,7 @@ describe('predefined-toolchains', () => {
8
- \${env.JAVA_HOME_8_X64}
+ /jdks/foo_8
@@ -98,7 +98,7 @@ describe('predefined-toolchains', () => {
8
- \${env.JAVA_HOME_8_X64}
+ /jdks/foo_8
@@ -109,7 +109,7 @@ describe('predefined-toolchains', () => {
11
- \${env.JAVA_HOME_11_X64}
+ /jdks/foo_11