From f45cd82b67042e9e5c24cef950ea0c61736241c6 Mon Sep 17 00:00:00 2001 From: Bruno Borges Date: Wed, 8 Jul 2026 12:44:58 -0400 Subject: [PATCH] Rename jdkFile input to jdk-file with deprecated alias (#1083) * Rename jdkFile input to jdk-file with deprecated alias Add a standardized `jdk-file` input to match the lowercase-dash naming used by every other action input. The camelCase `jdkFile` input is kept as a deprecated alias: it still works, but emits a deprecation warning and may be removed in a future release. `jdk-file` takes precedence when both are provided. Updates docs and the local-file e2e workflow (one case intentionally keeps using the deprecated alias for coverage) and regenerates the dist bundles. Fixes #1077 Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * docs: keep jdkFile in switching-to-v2 guide The switching-to-v2 migration guide uses actions/setup-java@v2, which only supports the camelCase jdkFile input. Keep the new jdk-file spelling in current-version docs only. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> (cherry picked from commit 7dbccc66eed5f22216da97c4e9764d613b80642b) --- .github/workflows/e2e-local-file.yml | 5 +++-- README.md | 2 +- action.yml | 6 +++++- docs/advanced-usage.md | 12 ++++++------ src/constants.ts | 3 ++- src/setup-java.ts | 15 ++++++++++++++- 6 files changed, 31 insertions(+), 12 deletions(-) diff --git a/.github/workflows/e2e-local-file.yml b/.github/workflows/e2e-local-file.yml index 1b9c4864..0a81182e 100644 --- a/.github/workflows/e2e-local-file.yml +++ b/.github/workflows/e2e-local-file.yml @@ -47,7 +47,7 @@ jobs: id: setup-java with: distribution: 'jdkfile' - jdkFile: ${{ runner.temp }}/${{ env.LocalFilename }} + jdk-file: ${{ runner.temp }}/${{ env.LocalFilename }} java-version: '11.0.0-ea' architecture: x64 - name: Verify Java version @@ -88,7 +88,7 @@ jobs: id: setup-java with: distribution: 'jdkfile' - jdkFile: ${{ runner.temp }}/${{ env.LocalFilename }} + jdk-file: ${{ runner.temp }}/${{ env.LocalFilename }} java-version: '11.0.0-ea' architecture: x64 - name: Verify Java version @@ -129,6 +129,7 @@ jobs: id: setup-java with: distribution: 'jdkfile' + # Intentionally uses the deprecated `jdkFile` alias to keep it covered. jdkFile: ${{ runner.temp }}/${{ env.LocalFilename }} java-version: '11.0.0-ea' architecture: x64 diff --git a/README.md b/README.md index 562f9ff5..f8a0b572 100644 --- a/README.md +++ b/README.md @@ -37,7 +37,7 @@ For more details, see the full release notes on the [releases page](https://git - `architecture`: The target architecture of the package. Possible values: `x86`, `x64`, `armv7`, `aarch64`, `ppc64le`. Default value: Derived from the runner machine. - - `jdkFile`: If a use-case requires a custom distribution setup-java uses the compressed JDK from the location pointed by this input and will take care of the installation and caching on the VM. Note: `distribution` must be set to 'jdkfile' (case-sensitive; all lowercase) when using this option. + - `jdk-file`: If a use-case requires a custom distribution setup-java uses the compressed JDK from the location pointed by this input and will take care of the installation and caching on the VM. Note: `distribution` must be set to 'jdkfile' (case-sensitive; all lowercase) when using this option. (The camelCase `jdkFile` input is still accepted as a deprecated alias and may be removed in a future release.) - `check-latest`: Setting this option makes the action to check for the latest available version for the version spec. diff --git a/action.yml b/action.yml index f4747c1a..781c8245 100644 --- a/action.yml +++ b/action.yml @@ -19,9 +19,13 @@ inputs: architecture: description: "The architecture of the package (defaults to the action runner's architecture)" required: false - jdkFile: + jdk-file: description: 'Path to where the compressed JDK is located' required: false + jdkFile: + description: 'Deprecated alias for `jdk-file`. Path to where the compressed JDK is located. Use `jdk-file` instead; this alias may be removed in a future release.' + required: false + deprecationMessage: 'The `jdkFile` input is deprecated. Use `jdk-file` instead.' check-latest: description: 'Set this option if you want the action to check for the latest available version that satisfies the version spec' required: false diff --git a/docs/advanced-usage.md b/docs/advanced-usage.md index c46db1e7..1df02a60 100644 --- a/docs/advanced-usage.md +++ b/docs/advanced-usage.md @@ -330,7 +330,7 @@ In this example, `JAVA_HOME` and `java` on `PATH` point to Java 17, while Java 2 If your use-case requires a custom distribution or a version that is not provided by setup-java, you can download it manually and setup-java will take care of the installation and caching on the VM: > [!NOTE] -> This approach also lets you use builds that setup-java does not provide directly, such as **Early Access (EA)** or other unreleased JDK builds (for example, an upcoming feature release or a Loom/Valhalla preview build). Download the desired archive in a prior step and point `jdkFile` at it; setup-java will extract, install, and cache it just like a supported distribution. When targeting multiple architectures, select the correct binary per architecture in your workflow (for example, with a build matrix). +> This approach also lets you use builds that setup-java does not provide directly, such as **Early Access (EA)** or other unreleased JDK builds (for example, an upcoming feature release or a Loom/Valhalla preview build). Download the desired archive in a prior step and point `jdk-file` at it; setup-java will extract, install, and cache it just like a supported distribution. When targeting multiple architectures, select the correct binary per architecture in your workflow (for example, with a build matrix). ```yaml steps: @@ -340,7 +340,7 @@ steps: - uses: actions/setup-java@v5 with: distribution: 'jdkfile' - jdkFile: ${{ runner.temp }}/java_package.tar.gz + jdk-file: ${{ runner.temp }}/java_package.tar.gz java-version: '11.0.0' architecture: x64 @@ -357,7 +357,7 @@ steps: - uses: actions/setup-java@v5 with: distribution: 'jdkfile' - jdkFile: ${{ runner.temp }}/java_package.tar.gz + jdk-file: ${{ runner.temp }}/java_package.tar.gz java-version: '25.0.0-ea.36' architecture: x64 @@ -383,7 +383,7 @@ If your use-case requires a custom distribution (in the example, alpine-linux is - uses: actions/setup-java@v5 with: distribution: 'jdkfile' - jdkFile: ${{ runner.temp }}/java_package.tar.gz + jdk-file: ${{ runner.temp }}/java_package.tar.gz java-version: {{ steps.fetch_latest_jdk.outputs.java_version }} architecture: x64 - run: java --version @@ -708,7 +708,7 @@ The result is a Toolchain with entries for JDKs 8, 11 and 15. You can even combi - uses: actions/setup-java@v5 with: distribution: 'jdkfile' - jdkFile: ${{ runner.temp }}/java_package.tar.gz + jdk-file: ${{ runner.temp }}/java_package.tar.gz java-version: '1.6' architecture: x64 ``` @@ -725,7 +725,7 @@ Each JDK provider will receive a default `vendor` using the `distribution` input - uses: actions/setup-java@v5 with: distribution: 'jdkfile' - jdkFile: ${{ runner.temp }}/java_package.tar.gz + jdk-file: ${{ runner.temp }}/java_package.tar.gz java-version: '1.6' architecture: x64 mvn-toolchain-vendor: 'Oracle' diff --git a/src/constants.ts b/src/constants.ts index 67a5d7ea..2f7362b0 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -4,7 +4,8 @@ export const INPUT_JAVA_VERSION_FILE = 'java-version-file'; export const INPUT_ARCHITECTURE = 'architecture'; export const INPUT_JAVA_PACKAGE = 'java-package'; export const INPUT_DISTRIBUTION = 'distribution'; -export const INPUT_JDK_FILE = 'jdkFile'; +export const INPUT_JDK_FILE = 'jdk-file'; +export const INPUT_JDK_FILE_DEPRECATED = 'jdkFile'; export const INPUT_CHECK_LATEST = 'check-latest'; export const INPUT_SET_DEFAULT = 'set-default'; export const INPUT_VERIFY_SIGNATURE = 'verify-signature'; diff --git a/src/setup-java.ts b/src/setup-java.ts index 6ecb4901..1d12b290 100644 --- a/src/setup-java.ts +++ b/src/setup-java.ts @@ -21,7 +21,7 @@ async function run() { const versionFile = core.getInput(constants.INPUT_JAVA_VERSION_FILE); const architecture = core.getInput(constants.INPUT_ARCHITECTURE); const packageType = core.getInput(constants.INPUT_JAVA_PACKAGE); - const jdkFile = core.getInput(constants.INPUT_JDK_FILE); + const jdkFile = getJdkFileInput(); const cache = core.getInput(constants.INPUT_CACHE); const cacheDependencyPath = core.getInput( constants.INPUT_CACHE_DEPENDENCY_PATH @@ -128,6 +128,19 @@ async function run() { run(); +function getJdkFileInput(): string { + const jdkFile = core.getInput(constants.INPUT_JDK_FILE); + const deprecatedJdkFile = core.getInput(constants.INPUT_JDK_FILE_DEPRECATED); + + if (deprecatedJdkFile) { + core.warning( + `The '${constants.INPUT_JDK_FILE_DEPRECATED}' input is deprecated and may be removed in a future release. Please use '${constants.INPUT_JDK_FILE}' instead.` + ); + } + + return jdkFile || deprecatedJdkFile; +} + async function installVersion( version: string, options: installerInputsOptions,