Unverified Commit 3a286527 authored by Samruddhi Khandale's avatar Samruddhi Khandale Committed by GitHub

Java: add jdkDistro option (#172)

* add jdkDistro option

* bump version
parent ceb4544c
{ {
"id": "java", "id": "java",
"version": "1.0.8", "version": "1.0.9",
"name": "Java (via SDKMAN!)", "name": "Java (via SDKMAN!)",
"documentationURL": "https://github.com/devcontainers/features/tree/main/src/java", "documentationURL": "https://github.com/devcontainers/features/tree/main/src/java",
"description": "Installs Java, SDKMAN! (if not installed), and needed dependencies.", "description": "Installs Java, SDKMAN! (if not installed), and needed dependencies.",
...@@ -17,6 +17,17 @@ ...@@ -17,6 +17,17 @@
"default": "latest", "default": "latest",
"description": "Select or enter a Java version to install" "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": { "installGradle": {
"type": "boolean", "type": "boolean",
"default": false, "default": false,
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
JAVA_VERSION=${VERSION:-"lts"} JAVA_VERSION=${VERSION:-"lts"}
INSTALL_GRADLE=${INSTALLGRADLE:-"false"} INSTALL_GRADLE=${INSTALLGRADLE:-"false"}
INSTALL_MAVEN=${INSTALLMAVEN:-"false"} INSTALL_MAVEN=${INSTALLMAVEN:-"false"}
JDK_DISTRO=${JDKDISTRO}
export SDKMAN_DIR=${SDKMAN_DIR:-"/usr/local/sdkman"} export SDKMAN_DIR=${SDKMAN_DIR:-"/usr/local/sdkman"}
USERNAME=${USERNAME:-"automatic"} USERNAME=${USERNAME:-"automatic"}
...@@ -76,12 +77,13 @@ check_packages() { ...@@ -76,12 +77,13 @@ check_packages() {
fi fi
} }
# Use Microsoft JDK for everything but JDK 8 # Use Microsoft JDK for everything but JDK 8 and 18 (unless specified differently with jdkDistro option)
jdk_distro="ms"
get_jdk_distro() { get_jdk_distro() {
VERSION="$1" VERSION="$1"
if echo "${VERSION}" | grep -E '^8([\s\.]|$)' > /dev/null 2>&1; then if [ "${JDK_DISTRO}" = "ms" ]; then
jdk_distro="tem" 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 fi
} }
...@@ -149,7 +151,7 @@ if [ ! -d "${SDKMAN_DIR}" ]; then ...@@ -149,7 +151,7 @@ if [ ! -d "${SDKMAN_DIR}" ]; then
fi fi
get_jdk_distro ${JAVA_VERSION} 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. # Additional java versions to be installed but not be set as default.
if [ ! -z "${ADDITIONAL_VERSIONS}" ]; then if [ ! -z "${ADDITIONAL_VERSIONS}" ]; then
...@@ -158,7 +160,7 @@ if [ ! -z "${ADDITIONAL_VERSIONS}" ]; then ...@@ -158,7 +160,7 @@ if [ ! -z "${ADDITIONAL_VERSIONS}" ]; then
read -a additional_versions <<< "$ADDITIONAL_VERSIONS" read -a additional_versions <<< "$ADDITIONAL_VERSIONS"
for version in "${additional_versions[@]}"; do for version in "${additional_versions[@]}"; do
get_jdk_distro ${version} 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 done
IFS=$OLDIFS IFS=$OLDIFS
su ${USERNAME} -c ". ${SDKMAN_DIR}/bin/sdkman-init.sh && sdk default java ${JAVA_VERSION}" su ${USERNAME} -c ". ${SDKMAN_DIR}/bin/sdkman-init.sh && sdk default java ${JAVA_VERSION}"
......
...@@ -5,7 +5,7 @@ set -e ...@@ -5,7 +5,7 @@ set -e
# Optional: Import test library # Optional: Import test library
source dev-container-features-test-lib 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 11 installed" ls /usr/local/sdkman/candidates/java | grep 11
check "java version 8 installed" ls /usr/local/sdkman/candidates/java | grep 8 check "java version 8 installed" ls /usr/local/sdkman/candidates/java | grep 8
......
#!/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
{ {
"install_from_non_default_distro": {
"image": "ubuntu:focal",
"features": {
"java": {
"version": "18",
"jdkDistro": "open"
}
}
},
"install_additional_java": { "install_additional_java": {
"image": "ubuntu:focal", "image": "ubuntu:focal",
"features": { "features": {
"java": { "java": {
"version": "17", "version": "18",
"additionalVersions": "11,8" "additionalVersions": "11,8"
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment