Java: add jdkDistro option (#172)

* add jdkDistro option

* bump version
This commit is contained in:
Samruddhi Khandale 2022-09-23 14:25:58 -07:00 committed by GitHub
parent ceb4544cc3
commit 3a28652790
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 42 additions and 9 deletions

View file

@ -1,6 +1,6 @@
{
"id": "java",
"version": "1.0.8",
"version": "1.0.9",
"name": "Java (via SDKMAN!)",
"documentationURL": "https://github.com/devcontainers/features/tree/main/src/java",
"description": "Installs Java, SDKMAN! (if not installed), and needed dependencies.",
@ -17,6 +17,17 @@
"default": "latest",
"description": "Select or enter a Java version to install"
},
"jdkDistro": {
"type": "string",
"proposals": [
"ms",
"open",
"oracle",
"tem"
],
"default": "ms",
"description": "Select or enter a JDK distribution"
},
"installGradle": {
"type": "boolean",
"default": false,

View file

@ -12,6 +12,7 @@
JAVA_VERSION=${VERSION:-"lts"}
INSTALL_GRADLE=${INSTALLGRADLE:-"false"}
INSTALL_MAVEN=${INSTALLMAVEN:-"false"}
JDK_DISTRO=${JDKDISTRO}
export SDKMAN_DIR=${SDKMAN_DIR:-"/usr/local/sdkman"}
USERNAME=${USERNAME:-"automatic"}
@ -76,12 +77,13 @@ check_packages() {
fi
}
# Use Microsoft JDK for everything but JDK 8
jdk_distro="ms"
# Use Microsoft JDK for everything but JDK 8 and 18 (unless specified differently with jdkDistro option)
get_jdk_distro() {
VERSION="$1"
if echo "${VERSION}" | grep -E '^8([\s\.]|$)' > /dev/null 2>&1; then
jdk_distro="tem"
if [ "${JDK_DISTRO}" = "ms" ]; then
if echo "${VERSION}" | grep -E '^8([\s\.]|$)' > /dev/null 2>&1 || echo "${VERSION}" | grep -E '^18([\s\.]|$)' > /dev/null 2>&1; then
JDK_DISTRO="tem"
fi
fi
}
@ -149,7 +151,7 @@ if [ ! -d "${SDKMAN_DIR}" ]; then
fi
get_jdk_distro ${JAVA_VERSION}
sdk_install java ${JAVA_VERSION} "\\s*" "(\\.[a-z0-9]+)*-${jdk_distro}\\s*" ".*-[a-z]+$" "true"
sdk_install java ${JAVA_VERSION} "\\s*" "(\\.[a-z0-9]+)*-${JDK_DISTRO}\\s*" ".*-[a-z]+$" "true"
# Additional java versions to be installed but not be set as default.
if [ ! -z "${ADDITIONAL_VERSIONS}" ]; then
@ -158,7 +160,7 @@ if [ ! -z "${ADDITIONAL_VERSIONS}" ]; then
read -a additional_versions <<< "$ADDITIONAL_VERSIONS"
for version in "${additional_versions[@]}"; do
get_jdk_distro ${version}
sdk_install java ${version} "\\s*" "(\\.[a-z0-9]+)*-${jdk_distro}\\s*" ".*-[a-z]+$" "false"
sdk_install java ${version} "\\s*" "(\\.[a-z0-9]+)*-${JDK_DISTRO}\\s*" ".*-[a-z]+$" "false"
done
IFS=$OLDIFS
su ${USERNAME} -c ". ${SDKMAN_DIR}/bin/sdkman-init.sh && sdk default java ${JAVA_VERSION}"

View file

@ -5,7 +5,7 @@ set -e
# Optional: Import test library
source dev-container-features-test-lib
check "java version 17 installed as default" java --version | grep 17
check "java version 18 installed as default" java --version | grep 18
check "java version 11 installed" ls /usr/local/sdkman/candidates/java | grep 11
check "java version 8 installed" ls /usr/local/sdkman/candidates/java | grep 8

View file

@ -0,0 +1,11 @@
#!/bin/bash
set -e
# Optional: Import test library
source dev-container-features-test-lib
check "java version 18 installed as default" java --version | grep 18
# Report result
reportResults

View file

@ -1,9 +1,18 @@
{
"install_from_non_default_distro": {
"image": "ubuntu:focal",
"features": {
"java": {
"version": "18",
"jdkDistro": "open"
}
}
},
"install_additional_java": {
"image": "ubuntu:focal",
"features": {
"java": {
"version": "17",
"version": "18",
"additionalVersions": "11,8"
}
}