Unverified Commit be4f0498 authored by etienne-chrp's avatar etienne-chrp Committed by GitHub

Add Gradle and Maven version parameters to Java (#263)

* Refactor java feature tests grep syntax

The grep with pipe syntax was creating problems with the check helper

Change them in favour of process substitution syntax

* Fix java feature tests about java version

Java 18 is not available anymore in SDKMAN

Some tests asserts were generating false positives

* Add Gradle and Maven version parameters to Java
parent bff31788
......@@ -18,7 +18,9 @@ Installs Java, SDKMAN! (if not installed), and needed dependencies.
| version | Select or enter a Java version to install | string | latest |
| jdkDistro | Select or enter a JDK distribution | string | ms |
| installGradle | Install Gradle, a build automation tool for multi-language software development | boolean | false |
| gradleVersion | Select or enter a Gradle version | string | latest |
| installMaven | Install Maven, a management tool for Java | boolean | false |
| mavenVersion | Select or enter a Maven version | string | latest |
## License
......
{
"id": "java",
"version": "1.0.11",
"version": "1.1.0",
"name": "Java (via SDKMAN!)",
"documentationURL": "https://github.com/devcontainers/features/tree/main/src/java",
"description": "Installs Java, SDKMAN! (if not installed), and needed dependencies.",
......@@ -33,10 +33,32 @@
"default": false,
"description": "Install Gradle, a build automation tool for multi-language software development"
},
"gradleVersion": {
"type": "string",
"proposals": [
"latest",
"7.5.1",
"6.9.3",
"5.6.4"
],
"default": "latest",
"description": "Select or enter a Gradle version"
},
"installMaven": {
"type": "boolean",
"default": false,
"description": "Install Maven, a management tool for Java"
},
"mavenVersion": {
"type": "string",
"proposals": [
"latest",
"3.8.6",
"3.6.3",
"3.5.4"
],
"default": "latest",
"description": "Select or enter a Maven version"
}
},
"buildArg": "_VSC_INSTALL_JAVA",
......
......@@ -11,7 +11,9 @@
JAVA_VERSION=${VERSION:-"lts"}
INSTALL_GRADLE=${INSTALLGRADLE:-"false"}
GRADLE_VERSION=${GRADLEVERSION:-"latest"}
INSTALL_MAVEN=${INSTALLMAVEN:-"false"}
MAVEN_VERSION=${MAVENVERSION:-"latest"}
JDK_DISTRO=${JDKDISTRO}
export SDKMAN_DIR=${SDKMAN_DIR:-"/usr/local/sdkman"}
......@@ -173,12 +175,12 @@ fi
# Install Gradle
if [[ "${INSTALL_GRADLE}" = "true" ]] && ! gradle --version > /dev/null; then
sdk_install gradle latest
sdk_install gradle ${GRADLE_VERSION}
fi
# Install Maven
if [[ "${INSTALL_MAVEN}" = "true" ]] && ! mvn --version > /dev/null; then
sdk_install maven latest
sdk_install maven ${MAVEN_VERSION}
fi
# Clean up
......
......@@ -5,9 +5,9 @@ set -e
# Optional: Import test library
source dev-container-features-test-lib
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
check "java version 11 installed as default" grep "11\." <(java --version)
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)
# Report result
reportResults
......@@ -5,7 +5,7 @@ set -e
# Optional: Import test library
source dev-container-features-test-lib
check "java version 18 installed as default" java --version | grep 18
check "java version openjdk 11 installed" grep "openjdk 11." <(java --version)
# Report result
reportResults
......@@ -5,17 +5,17 @@ set -e
# Optional: Import test library
source dev-container-features-test-lib
check "user is root" whoami | grep root
check "user is root" grep root <(whoami)
check "java" java --version
check "gradle" gradle --version
cd /tmp && gradle init --type basic --dsl groovy --incubating --project-name test
check "GRADLE_USER_HOME exists" ls -la /root | grep ".gradle"
check "GRADLE_USER_HOME exists" grep ".gradle" <(ls -la /root)
check "maven" mvn --version
cd /tmp && mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false
check "m2 exists" ls -la /root | grep ".m2"
check "m2 exists" grep ".m2" <(ls -la /root)
# Report result
reportResults
......@@ -5,17 +5,17 @@ set -e
# Optional: Import test library
source dev-container-features-test-lib
check "user is vscode" whoami | grep vscode
check "user is vscode" grep vscode <(whoami)
check "java" java --version
check "gradle" gradle --version
cd /tmp && gradle init --type basic --dsl groovy --incubating --project-name test
check "GRADLE_USER_HOME exists" ls -la /home/vscode | grep ".gradle"
check "GRADLE_USER_HOME exists" grep ".gradle" <(ls -la /home/vscode)
check "maven" mvn --version
cd /tmp && mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false
check "m2 exists" ls -la /home/vscode | grep ".m2"
check "m2 exists" grep ".m2" <(ls -la /home/vscode)
# Report result
reportResults
#!/bin/bash
set -e
# Optional: Import test library
source dev-container-features-test-lib
check "user is root" grep root <(whoami)
check "java" java --version
check "gradle version" grep "Gradle 6.8.3" <(gradle --version)
cd /tmp && gradle init --type basic --dsl groovy --project-name test
check "GRADLE_USER_HOME exists" grep ".gradle" <(ls -la /root)
check "maven version" grep "Apache Maven 3.6.3" <(mvn --version)
cd /tmp && mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false
check "m2 exists" grep ".m2" <(ls -la /root)
# Report result
reportResults
......@@ -3,7 +3,7 @@
"image": "ubuntu:focal",
"features": {
"java": {
"version": "18",
"version": "11",
"jdkDistro": "open"
}
}
......@@ -12,8 +12,8 @@
"image": "ubuntu:focal",
"features": {
"java": {
"version": "18",
"additionalVersions": "11,8"
"version": "11",
"additionalVersions": "17,8"
}
}
},
......@@ -40,5 +40,17 @@
"installMaven": true
}
}
},
"install_gradle_and_maven_with_specific_version": {
"image": "ubuntu:focal",
"features": {
"java": {
"version": "latest",
"installGradle": "true",
"gradleVersion": "6.8.3",
"installMaven": "true",
"mavenVersion": "3.6.3"
}
}
}
}
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