diff --git a/src/java/devcontainer-feature.json b/src/java/devcontainer-feature.json index 3a1170df7..cfc22e0a2 100644 --- a/src/java/devcontainer-feature.json +++ b/src/java/devcontainer-feature.json @@ -1,6 +1,6 @@ { "id": "java", - "version": "1.8.1", + "version": "1.8.2", "name": "Java (via SDKMAN!)", "documentationURL": "https://github.com/devcontainers/features/tree/main/src/java", "description": "Installs Java, SDKMAN! (if not installed), and needed dependencies.", diff --git a/src/java/install.sh b/src/java/install.sh index a142ab9e3..b8b46e2fc 100644 --- a/src/java/install.sh +++ b/src/java/install.sh @@ -370,7 +370,7 @@ if [ ! -d "${SDKMAN_DIR}" ]; then updaterc "export SDKMAN_DIR=${SDKMAN_DIR}\n. \${SDKMAN_DIR}/bin/sdkman-init.sh" fi -sdk_install java ${JAVA_VERSION} "\\s*" "(\\.[a-z0-9]+)*-" ".*-[a-z]+$" "true" +sdk_install java ${JAVA_VERSION} "\\s*" "([.+][a-z0-9]+)*-" ".*-[a-z]+$" "true" # Additional java versions to be installed but not be set as default. if [ ! -z "${ADDITIONAL_VERSIONS}" ]; then @@ -378,7 +378,7 @@ if [ ! -z "${ADDITIONAL_VERSIONS}" ]; then IFS="," read -a additional_versions <<< "$ADDITIONAL_VERSIONS" for version in "${additional_versions[@]}"; do - sdk_install java ${version} "\\s*" "(\\.[a-z0-9]+)*-" ".*-[a-z]+$" "false" + sdk_install java ${version} "\\s*" "([.+][a-z0-9]+)*-" ".*-[a-z]+$" "false" done IFS=$OLDIFS su ${USERNAME} -c ". ${SDKMAN_DIR}/bin/sdkman-init.sh && sdk default java ${JAVA_VERSION}" diff --git a/test/java/install_additional_java.sh b/test/java/install_additional_java.sh index 882c49d1c..2e7bdaf6e 100644 --- a/test/java/install_additional_java.sh +++ b/test/java/install_additional_java.sh @@ -6,6 +6,7 @@ set -e source dev-container-features-test-lib check "java version 11 installed as default" grep "11\." <(java --version) +check "java version 25 installed" grep -E "^25\.[0-9.]+\+[0-9]+-ms$" <(ls /usr/local/sdkman/candidates/java) check "java version 17 installed" grep "^17\." <(ls /usr/local/sdkman/candidates/java) check "java version 8 installed" grep "^8\." <(ls /usr/local/sdkman/candidates/java) diff --git a/test/java/install_java_25.sh b/test/java/install_java_25.sh new file mode 100644 index 000000000..d71cabc95 --- /dev/null +++ b/test/java/install_java_25.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +set -e + +# Optional: Import test library +source dev-container-features-test-lib + +echo 'public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } }' > HelloWorld.java +javac HelloWorld.java + +check "hello world with Java 25" /bin/bash -c 'java HelloWorld | grep "Hello, World!"' +check "Java 25 installed as default" grep 'openjdk 25\.' <(java --version) +check "Java 25 Microsoft candidate with build metadata installed" grep -E '^25\.[0-9.]+\+[0-9]+-ms$' <(ls /usr/local/sdkman/candidates/java) + +# Report result +reportResults \ No newline at end of file diff --git a/test/java/scenarios.json b/test/java/scenarios.json index 0441f0aa6..cc570df85 100644 --- a/test/java/scenarios.json +++ b/test/java/scenarios.json @@ -16,6 +16,14 @@ } } }, + "install_java_25": { + "image": "ubuntu:noble", + "features": { + "java": { + "version": "25" + } + } + }, "install_lts_version": { "image": "ubuntu:noble", "features": { @@ -29,7 +37,7 @@ "features": { "java": { "version": "11", - "additionalVersions": "17,8" + "additionalVersions": "25,17,8" } } },