From d0351b4837dd42a4a838ef25daec3bf530e20aaf Mon Sep 17 00:00:00 2001 From: lmvysakh Date: Thu, 4 Sep 2025 00:34:05 +0530 Subject: [PATCH 1/4] Update documentation to use checkout and Java v5 (#903) Co-authored-by: lmvysakh --- README.md | 36 ++++++++------- docs/advanced-usage.md | 100 ++++++++++++++++++++--------------------- 2 files changed, 69 insertions(+), 67 deletions(-) diff --git a/README.md b/README.md index 844fa993..9d94e77c 100644 --- a/README.md +++ b/README.md @@ -23,6 +23,8 @@ This action allows you to work with Java and Scala projects. - V2 supports custom distributions and provides support for Azul Zulu OpenJDK, Eclipse Temurin and AdoptOpenJDK out of the box. V1 supports only Azul Zulu OpenJDK. - V2 requires you to specify distribution along with the version. V1 defaults to Azul Zulu OpenJDK, only version input is required. Follow [the migration guide](docs/switching-to-v2.md) to switch from V1 to V2. +For information about the latest releases, recent updates, and newly supported distributions, please refer to the `setup-java` [Releases](https://github.com/actions/setup-java/releases). + ## Usage - `java-version`: The Java version that is going to be set up. Takes a whole or [semver](#supported-version-syntax) Java version. If not specified, the action will expect `java-version-file` input to be specified. @@ -69,8 +71,8 @@ This action allows you to work with Java and Scala projects. #### Eclipse Temurin ```yaml steps: -- uses: actions/checkout@v4 -- uses: actions/setup-java@v4 +- uses: actions/checkout@v5 +- uses: actions/setup-java@v5 with: distribution: 'temurin' # See 'Supported distributions' for available options java-version: '21' @@ -80,8 +82,8 @@ steps: #### Azul Zulu OpenJDK ```yaml steps: -- uses: actions/checkout@v4 -- uses: actions/setup-java@v4 +- uses: actions/checkout@v5 +- uses: actions/setup-java@v5 with: distribution: 'zulu' # See 'Supported distributions' for available options java-version: '21' @@ -136,8 +138,8 @@ The cache input is optional, and caching is turned off by default. #### Caching gradle dependencies ```yaml steps: -- uses: actions/checkout@v4 -- uses: actions/setup-java@v4 +- uses: actions/checkout@v5 +- uses: actions/setup-java@v5 with: distribution: 'temurin' java-version: '21' @@ -151,8 +153,8 @@ steps: #### Caching maven dependencies ```yaml steps: -- uses: actions/checkout@v4 -- uses: actions/setup-java@v4 +- uses: actions/checkout@v5 +- uses: actions/setup-java@v5 with: distribution: 'temurin' java-version: '21' @@ -165,8 +167,8 @@ steps: #### Caching sbt dependencies ```yaml steps: -- uses: actions/checkout@v4 -- uses: actions/setup-java@v4 +- uses: actions/checkout@v5 +- uses: actions/setup-java@v5 with: distribution: 'temurin' java-version: '21' @@ -185,8 +187,8 @@ Usually, cache gets downloaded in multiple segments of fixed sizes. Sometimes, a env: SEGMENT_DOWNLOAD_TIMEOUT_MINS: '5' steps: -- uses: actions/checkout@v4 -- uses: actions/setup-java@v4 +- uses: actions/checkout@v5 +- uses: actions/setup-java@v5 with: distribution: 'temurin' java-version: '21' @@ -205,8 +207,8 @@ For Java distributions that are not cached on Hosted images, `check-latest` alwa ```yaml steps: -- uses: actions/checkout@v4 -- uses: actions/setup-java@v4 +- uses: actions/checkout@v5 +- uses: actions/setup-java@v5 with: distribution: 'temurin' java-version: '21' @@ -224,9 +226,9 @@ jobs: java: [ '8', '11', '17', '21' ] name: Java ${{ matrix.Java }} sample steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Setup java - uses: actions/setup-java@v4 + uses: actions/setup-java@v5 with: distribution: '' java-version: ${{ matrix.java }} @@ -239,7 +241,7 @@ All versions are added to the PATH. The last version will be used and available ```yaml steps: - - uses: actions/setup-java@v4 + - uses: actions/setup-java@v5 with: distribution: '' java-version: | diff --git a/docs/advanced-usage.md b/docs/advanced-usage.md index 4ba80b03..226ef1f9 100644 --- a/docs/advanced-usage.md +++ b/docs/advanced-usage.md @@ -31,8 +31,8 @@ Inputs `java-version` and `distribution` are mandatory and needs to be provided. ```yaml steps: -- uses: actions/checkout@v4 -- uses: actions/setup-java@v4 +- uses: actions/checkout@v5 +- uses: actions/setup-java@v5 with: distribution: 'temurin' java-version: '21' @@ -44,8 +44,8 @@ steps: ```yaml steps: -- uses: actions/checkout@v4 -- uses: actions/setup-java@v4 +- uses: actions/checkout@v5 +- uses: actions/setup-java@v5 with: distribution: 'adopt-hotspot' java-version: '11' @@ -56,8 +56,8 @@ steps: ```yaml steps: -- uses: actions/checkout@v4 -- uses: actions/setup-java@v4 +- uses: actions/checkout@v5 +- uses: actions/setup-java@v5 with: distribution: 'zulu' java-version: '21' @@ -69,8 +69,8 @@ steps: ```yaml steps: -- uses: actions/checkout@v4 -- uses: actions/setup-java@v4 +- uses: actions/checkout@v5 +- uses: actions/setup-java@v5 with: distribution: 'liberica' java-version: '21' @@ -82,8 +82,8 @@ steps: ```yaml steps: -- uses: actions/checkout@v4 -- uses: actions/setup-java@v4 +- uses: actions/checkout@v5 +- uses: actions/setup-java@v5 with: distribution: 'microsoft' java-version: '21' @@ -97,7 +97,7 @@ steps: To get a higher rate limit, you can [generate a personal access token on github.com](https://github.com/settings/tokens/new) and pass it as the `token` input for the action: ```yaml -uses: actions/setup-java@v4 +uses: actions/setup-java@v5 with: token: ${{ secrets.GH_DOTCOM_TOKEN }} distribution: 'microsoft' @@ -111,8 +111,8 @@ If the runner is not able to access github.com, any Java versions requested duri ```yaml steps: -- uses: actions/checkout@v4 -- uses: actions/setup-java@v4 +- uses: actions/checkout@v5 +- uses: actions/setup-java@v5 with: distribution: 'corretto' java-version: '21' @@ -124,8 +124,8 @@ steps: ```yaml steps: -- uses: actions/checkout@v4 -- uses: actions/setup-java@v4 +- uses: actions/checkout@v5 +- uses: actions/setup-java@v5 with: distribution: 'oracle' java-version: '21' @@ -137,8 +137,8 @@ steps: ```yaml steps: -- uses: actions/checkout@v4 -- uses: actions/setup-java@v4 +- uses: actions/checkout@v5 +- uses: actions/setup-java@v5 with: distribution: 'dragonwell' java-version: '8' @@ -149,8 +149,8 @@ steps: **NOTE:** An OpenJDK release maintained and supported by SAP ```yaml steps: -- uses: actions/checkout@v4 -- uses: actions/setup-java@v4 +- uses: actions/checkout@v5 +- uses: actions/setup-java@v5 with: distribution: 'sapmachine' java-version: '21' @@ -162,8 +162,8 @@ steps: ```yaml steps: -- uses: actions/checkout@v4 -- uses: actions/setup-java@v4 +- uses: actions/checkout@v5 +- uses: actions/setup-java@v5 with: distribution: 'graalvm' java-version: '21' @@ -181,8 +181,8 @@ For example, `11.0.24` is not available but `11.0.16` is. ```yaml steps: -- uses: actions/checkout@v4 -- uses: actions/setup-java@v4 +- uses: actions/checkout@v5 +- uses: actions/setup-java@v5 with: distribution: 'jetbrains' java-version: '11' @@ -194,8 +194,8 @@ GitHub token to the action to increase the rate limit. Set the `GITHUB_TOKEN` en ```yaml steps: -- uses: actions/checkout@v4 -- uses: actions/setup-java@v4 +- uses: actions/checkout@v5 +- uses: actions/setup-java@v5 with: distribution: 'jetbrains' java-version: '17' @@ -219,8 +219,8 @@ The available package types are: ## Installing custom Java package type ```yaml steps: -- uses: actions/checkout@v4 -- uses: actions/setup-java@v4 +- uses: actions/checkout@v5 +- uses: actions/setup-java@v5 with: distribution: '' java-version: '11' @@ -232,8 +232,8 @@ steps: ```yaml steps: -- uses: actions/checkout@v4 -- uses: actions/setup-java@v4 +- uses: actions/checkout@v5 +- uses: actions/setup-java@v5 with: distribution: '' java-version: '11' @@ -249,7 +249,7 @@ steps: - run: | download_url="https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.10%2B9/OpenJDK11U-jdk_x64_linux_hotspot_11.0.10_9.tar.gz" wget -O $RUNNER_TEMP/java_package.tar.gz $download_url -- uses: actions/setup-java@v4 +- uses: actions/setup-java@v5 with: distribution: 'jdkfile' jdkFile: ${{ runner.temp }}/java_package.tar.gz @@ -275,7 +275,7 @@ If your use-case requires a custom distribution (in the example, alpine-linux is latest_semver_version=$(curl -sL $latest_jdk_json_url | jq -r 'version.semver') echo "java_version=$latest_semver_version" >> "$GITHUB_OUTPUT" - - uses: actions/setup-java@v4 + - uses: actions/setup-java@v5 with: distribution: 'jdkfile' jdkFile: ${{ runner.temp }}/java_package.tar.gz @@ -296,9 +296,9 @@ jobs: java: [ '8', '11' ] name: Java ${{ matrix.Java }} (${{ matrix.distribution }}) sample steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Setup java - uses: actions/setup-java@v4 + uses: actions/setup-java@v5 with: distribution: ${{ matrix.distribution }} java-version: ${{ matrix.java }} @@ -316,9 +316,9 @@ jobs: os: [ 'ubuntu-latest', 'macos-latest', 'windows-latest' ] name: Java ${{ matrix.Java }} (${{ matrix.os }}) sample steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Setup java - uses: actions/setup-java@v4 + uses: actions/setup-java@v5 with: distribution: 'temurin' java-version: ${{ matrix.java }} @@ -333,9 +333,9 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Set up JDK 11 - uses: actions/setup-java@v4 + uses: actions/setup-java@v5 with: distribution: '' java-version: '11' @@ -349,7 +349,7 @@ jobs: GITHUB_TOKEN: ${{ github.token }} # GITHUB_TOKEN is the default env for the password - name: Set up Apache Maven Central - uses: actions/setup-java@v4 + uses: actions/setup-java@v5 with: # running setup-java again overwrites the settings.xml distribution: 'temurin' java-version: '11' @@ -446,9 +446,9 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Set up JDK 11 for Shared Runner - uses: actions/setup-java@v4 + uses: actions/setup-java@v5 with: distribution: '' java-version: '11' @@ -472,10 +472,10 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Set up JDK 11 - uses: actions/setup-java@v4 + uses: actions/setup-java@v5 with: distribution: '' java-version: '11' @@ -509,14 +509,14 @@ Subsequent calls to `setup-java` with distinct distribution and version paramete ```yaml steps: -- uses: actions/setup-java@v4 +- uses: actions/setup-java@v5 with: distribution: '' java-version: | 8 11 -- uses: actions/setup-java@v4 +- uses: actions/setup-java@v5 with: distribution: '' java-version: '15' @@ -528,7 +528,7 @@ The result is a Toolchain with entries for JDKs 8, 11 and 15. You can even combi - run: | download_url="https://example.com/java/jdk/6u45-b06/jdk-6u45-linux-x64.tar.gz" wget -O $RUNNER_TEMP/java_package.tar.gz $download_url -- uses: actions/setup-java@v4 +- uses: actions/setup-java@v5 with: distribution: 'jdkfile' jdkFile: ${{ runner.temp }}/java_package.tar.gz @@ -545,7 +545,7 @@ Each JDK provider will receive a default `vendor` using the `distribution` input - run: | download_url="https://example.com/java/jdk/6u45-b06/jdk-6u45-linux-x64.tar.gz" wget -O $RUNNER_TEMP/java_package.tar.gz $download_url -- uses: actions/setup-java@v4 +- uses: actions/setup-java@v5 with: distribution: 'jdkfile' jdkFile: ${{ runner.temp }}/java_package.tar.gz @@ -560,7 +560,7 @@ In case you install multiple versions of Java at once with multi-line `java-vers ```yaml steps: -- uses: actions/setup-java@v4 +- uses: actions/setup-java@v5 with: distribution: '' java-version: | @@ -574,8 +574,8 @@ Each JDK provider will receive a default `id` based on the combination of `distr ```yaml steps: -- uses: actions/checkout@v4 -- uses: actions/setup-java@v4 +- uses: actions/checkout@v5 +- uses: actions/setup-java@v5 with: distribution: 'temurin' java-version: '11' @@ -587,7 +587,7 @@ In case you install multiple versions of Java at once you can use the same synta ```yaml steps: -- uses: actions/setup-java@v4 +- uses: actions/setup-java@v5 with: distribution: '' java-version: | From a7ab372554b6eb1a8eb25e7d9aec1cc9f3ea1a76 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 Sep 2025 10:02:46 -0500 Subject: [PATCH 2/4] Bump prettier from 2.8.8 to 3.6.2 (#873) * Bump prettier from 2.8.8 to 3.6.2 Bumps [prettier](https://github.com/prettier/prettier) from 2.8.8 to 3.6.2. - [Release notes](https://github.com/prettier/prettier/releases) - [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md) - [Commits](https://github.com/prettier/prettier/compare/2.8.8...3.6.2) --- updated-dependencies: - dependency-name: prettier dependency-version: 3.6.2 dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] * doc update and check failure fix * npm run format-check * doc format update * doc update * doc update --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Aparna Jyothi --- README.md | 7 +++++++ __tests__/distributors/corretto-installer.test.ts | 10 ++++------ __tests__/distributors/dragonwell-installer.test.ts | 5 ++--- __tests__/distributors/jetbrains-installer.test.ts | 5 ++--- __tests__/distributors/sapmachine-installer.test.ts | 10 ++++------ package-lock.json | 13 +++++++------ package.json | 4 ++-- src/toolchains.ts | 5 ++--- 8 files changed, 30 insertions(+), 29 deletions(-) diff --git a/README.md b/README.md index 9d94e77c..4ed3c34d 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,13 @@ The `setup-java` action provides the following functionality for GitHub Actions This action allows you to work with Java and Scala projects. +## Breaking changes in V5 + +- Upgraded action from node20 to node24 + > Make sure your runner is on version v2.327.1 or later to ensure compatibility with this release [Release Notes](https://github.com/actions/runner/releases/tag/v2.327.1) + +For more details, see the full release notes on the [releases page](https://github.com/actions/setup-java/releases/tag/v5.0.0) + ## V2 vs V1 - V2 supports custom distributions and provides support for Azul Zulu OpenJDK, Eclipse Temurin and AdoptOpenJDK out of the box. V1 supports only Azul Zulu OpenJDK. diff --git a/__tests__/distributors/corretto-installer.test.ts b/__tests__/distributors/corretto-installer.test.ts index 0604603f..1da5e393 100644 --- a/__tests__/distributors/corretto-installer.test.ts +++ b/__tests__/distributors/corretto-installer.test.ts @@ -150,9 +150,8 @@ describe('getAvailableVersions', () => { }); mockPlatform(distribution, platform); - const availableVersion = await distribution['findPackageForDownload']( - version - ); + const availableVersion = + await distribution['findPackageForDownload'](version); expect(availableVersion).not.toBeNull(); expect(availableVersion.url).toBe(expectedLink); }); @@ -222,9 +221,8 @@ describe('getAvailableVersions', () => { const expectedLink = `https://corretto.aws/downloads/resources/17.0.2.8.1/amazon-corretto-17.0.2.8.1-macosx-${distroArch}.tar.gz`; - const availableVersion = await distribution['findPackageForDownload']( - '17' - ); + const availableVersion = + await distribution['findPackageForDownload']('17'); expect(availableVersion).not.toBeNull(); expect(availableVersion.url).toBe(expectedLink); } diff --git a/__tests__/distributors/dragonwell-installer.test.ts b/__tests__/distributors/dragonwell-installer.test.ts index 4a680d8f..627a96ab 100644 --- a/__tests__/distributors/dragonwell-installer.test.ts +++ b/__tests__/distributors/dragonwell-installer.test.ts @@ -206,9 +206,8 @@ describe('getAvailableVersions', () => { }); mockPlatform(distribution, platform); - const availableVersion = await distribution['findPackageForDownload']( - jdkVersion - ); + const availableVersion = + await distribution['findPackageForDownload'](jdkVersion); expect(availableVersion).not.toBeNull(); expect(availableVersion.url).toBe(expectedLink); } diff --git a/__tests__/distributors/jetbrains-installer.test.ts b/__tests__/distributors/jetbrains-installer.test.ts index 241843cc..44d8ef89 100644 --- a/__tests__/distributors/jetbrains-installer.test.ts +++ b/__tests__/distributors/jetbrains-installer.test.ts @@ -76,9 +76,8 @@ describe('findPackageForDownload', () => { checkLatest: false }); distribution['getAvailableVersions'] = async () => manifestData as any; - const resolvedVersion = await distribution['findPackageForDownload']( - input - ); + const resolvedVersion = + await distribution['findPackageForDownload'](input); const url = resolvedVersion.url; const options = {method: 'HEAD'}; diff --git a/__tests__/distributors/sapmachine-installer.test.ts b/__tests__/distributors/sapmachine-installer.test.ts index 4eec570a..5073cd9f 100644 --- a/__tests__/distributors/sapmachine-installer.test.ts +++ b/__tests__/distributors/sapmachine-installer.test.ts @@ -61,9 +61,8 @@ describe('getAvailableVersions', () => { mockPlatform(distribution, 'linux'); - const availableVersion = await distribution['findPackageForDownload']( - version - ); + const availableVersion = + await distribution['findPackageForDownload'](version); expect(availableVersion).not.toBeNull(); expect(availableVersion.url).toBe( 'https://github.com/SAP/SapMachine/releases/download/sapmachine-17.0.10/sapmachine-jdk-17.0.10_linux-x64_bin.tar.gz' @@ -230,9 +229,8 @@ describe('getAvailableVersions', () => { }); mockPlatform(distribution, platform); - const availableVersion = await distribution['findPackageForDownload']( - normalizedVersion - ); + const availableVersion = + await distribution['findPackageForDownload'](normalizedVersion); expect(availableVersion).not.toBeNull(); expect(availableVersion.url).toBe(expectedLink); } diff --git a/package-lock.json b/package-lock.json index 336c19e7..cf750144 100644 --- a/package-lock.json +++ b/package-lock.json @@ -32,7 +32,7 @@ "eslint-plugin-node": "^11.1.0", "jest": "^29.7.0", "jest-circus": "^29.7.0", - "prettier": "^2.8.4", + "prettier": "^3.6.2", "ts-jest": "^29.3.0", "typescript": "^5.3.3" }, @@ -4876,15 +4876,16 @@ } }, "node_modules/prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz", + "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", "dev": true, + "license": "MIT", "bin": { - "prettier": "bin-prettier.js" + "prettier": "bin/prettier.cjs" }, "engines": { - "node": ">=10.13.0" + "node": ">=14" }, "funding": { "url": "https://github.com/prettier/prettier?sponsor=1" diff --git a/package.json b/package.json index bccf0321..23b83337 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "private": true, "description": "setup java action", "main": "dist/setup/index.js", - "engines": { + "engines": { "node": ">=24.0.0" }, "scripts": { @@ -52,7 +52,7 @@ "eslint-plugin-node": "^11.1.0", "jest": "^29.7.0", "jest-circus": "^29.7.0", - "prettier": "^2.8.4", + "prettier": "^3.6.2", "ts-jest": "^29.3.0", "typescript": "^5.3.3" }, diff --git a/src/toolchains.ts b/src/toolchains.ts index cbb667eb..77cae83f 100644 --- a/src/toolchains.ts +++ b/src/toolchains.ts @@ -59,9 +59,8 @@ export async function createToolchainsSettings({ // when an alternate m2 location is specified use only that location (no .m2 directory) // otherwise use the home/.m2/ path await io.mkdirP(settingsDirectory); - const originalToolchains = await readExistingToolchainsFile( - settingsDirectory - ); + const originalToolchains = + await readExistingToolchainsFile(settingsDirectory); const updatedToolchains = generateToolchainDefinition( originalToolchains, jdkInfo.version, From 8c57fa36276f209f7c545338dc17a4cc89842dec Mon Sep 17 00:00:00 2001 From: Chiranjib Swain Date: Tue, 16 Sep 2025 23:49:02 +0530 Subject: [PATCH 3/4] Clarify JAVA_HOME and PATH setup in README (#841) * Update README to clarify JAVA_HOME and PATH setup * Clarify instructions for setting up multiple JDKs in README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4ed3c34d..7addc9a4 100644 --- a/README.md +++ b/README.md @@ -244,7 +244,7 @@ jobs: ### Install multiple JDKs -All versions are added to the PATH. The last version will be used and available globally. Other Java versions can be accessed through env variables with such specification as 'JAVA_HOME_{{ MAJOR_VERSION }}_{{ ARCHITECTURE }}'. +All configured Java versions are added to the PATH. The last one added to the PATH (i.e., the last JDK set up by this action) will be used as the default and available globally. Other Java versions can be accessed through environment variables such as 'JAVA_HOME_{{ MAJOR_VERSION }}_{{ ARCHITECTURE }}'. To use a specific Java version, set the JAVA_HOME environment variable accordingly and prepend its bin directory to the PATH to ensure it takes priority during execution. ```yaml steps: From ead9eaa3cfe0b0fc2fa749519ae09c3d4f4080b0 Mon Sep 17 00:00:00 2001 From: aparnajyothi-y <147696841+aparnajyothi-y@users.noreply.github.com> Date: Tue, 16 Sep 2025 23:53:22 +0530 Subject: [PATCH 4/4] Update Regex to Support All ASDF Versions for the supported distributions in tool-versions File (#767) * Regex update to fix #719 * Check failures fix * npm run format, npm run format-check & npm run build * Regex update * regex update * fixed check failures * updated regex * regex update for all the versions * regex and docmentation update * Regex update * format and doc update * doc format update * npm audit fix * resolve conflicts * resolve conflicts * resolve conflicts * doc update * Java version upgrade --- dist/cleanup/index.js | 2 +- dist/setup/index.js | 2 +- docs/advanced-usage.md | 4 ++++ package-lock.json | 1 + package.json | 2 +- src/util.ts | 2 +- 6 files changed, 9 insertions(+), 4 deletions(-) diff --git a/dist/cleanup/index.js b/dist/cleanup/index.js index 1822cce2..79ad0b5f 100644 --- a/dist/cleanup/index.js +++ b/dist/cleanup/index.js @@ -94704,7 +94704,7 @@ function getVersionFromFileContent(content, distributionName, versionFile) { const versionFileName = getFileName(versionFile); if (versionFileName == '.tool-versions') { javaVersionRegExp = - /^(java\s+)(?:\S*-)?v?(?(\d+)(\.\d+)?(\.\d+)?(\+\d+)?(-ea(\.\d+)?)?)$/m; + /^java\s+(?:\S*-)?(?\d+(?:\.\d+)*([+_.-](?:openj9[-._]?\d[\w.-]*|java\d+|jre[-_\w]*|OpenJDK\d+[\w_.-]*|[a-z0-9]+))*)/im; } else { javaVersionRegExp = /(?(?<=(^|\s|-))(\d+\S*))(\s|$)/; diff --git a/dist/setup/index.js b/dist/setup/index.js index d478f3e8..c4e8ec9e 100644 --- a/dist/setup/index.js +++ b/dist/setup/index.js @@ -132739,7 +132739,7 @@ function getVersionFromFileContent(content, distributionName, versionFile) { const versionFileName = getFileName(versionFile); if (versionFileName == '.tool-versions') { javaVersionRegExp = - /^(java\s+)(?:\S*-)?v?(?(\d+)(\.\d+)?(\.\d+)?(\+\d+)?(-ea(\.\d+)?)?)$/m; + /^java\s+(?:\S*-)?(?\d+(?:\.\d+)*([+_.-](?:openj9[-._]?\d[\w.-]*|java\d+|jre[-_\w]*|OpenJDK\d+[\w_.-]*|[a-z0-9]+))*)/im; } else { javaVersionRegExp = /(?(?<=(^|\s|-))(\d+\S*))(\s|$)/; diff --git a/docs/advanced-usage.md b/docs/advanced-usage.md index 226ef1f9..a8a0cc06 100644 --- a/docs/advanced-usage.md +++ b/docs/advanced-usage.md @@ -614,5 +614,9 @@ major versions: 8, 11, 16, 17, 21 more specific versions: 8.0.282+8, 8.0.232, 11.0, 11.0.4, 17.0 early access (EA) versions: 15-ea, 15.0.0-ea versions with specified distribution: openjdk64-11.0.2 +LTS versions : temurin-21.0.5+11.0.LTS ``` If the file contains multiple versions, only the first one will be recognized. + +***NOTE***: +For the tool-version file, ensure that you use standard semantic versioning (semver) formats, as non-standard formats (such as jetbrains-21b212.1) may not be parsed correctly. Additionally, for complex version strings containing multiple version-like segments (for example, java semeru-openj9-11.0.15+10_openj9-0.32.0), the extraction logic may incorrectly capture the last segment (0.32.0) instead of the main version (11.0.15+10). \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index cf750144..c99ed7e9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,3 +1,4 @@ + { "name": "setup-java", "version": "5.0.0", diff --git a/package.json b/package.json index 23b83337..21a30769 100644 --- a/package.json +++ b/package.json @@ -60,4 +60,4 @@ "url": "https://github.com/actions/setup-java/issues" }, "homepage": "https://github.com/actions/setup-java#readme" -} +} \ No newline at end of file diff --git a/src/util.ts b/src/util.ts index af75aaac..9e5f2f66 100644 --- a/src/util.ts +++ b/src/util.ts @@ -133,7 +133,7 @@ export function getVersionFromFileContent( const versionFileName = getFileName(versionFile); if (versionFileName == '.tool-versions') { javaVersionRegExp = - /^(java\s+)(?:\S*-)?v?(?(\d+)(\.\d+)?(\.\d+)?(\+\d+)?(-ea(\.\d+)?)?)$/m; + /^java\s+(?:\S*-)?(?\d+(?:\.\d+)*([+_.-](?:openj9[-._]?\d[\w.-]*|java\d+|jre[-_\w]*|OpenJDK\d+[\w_.-]*|[a-z0-9]+))*)/im; } else { javaVersionRegExp = /(?(?<=(^|\s|-))(\d+\S*))(\s|$)/; }