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. ...@@ -18,7 +18,9 @@ Installs Java, SDKMAN! (if not installed), and needed dependencies.
| version | Select or enter a Java version to install | string | latest | | version | Select or enter a Java version to install | string | latest |
| jdkDistro | Select or enter a JDK distribution | string | ms | | jdkDistro | Select or enter a JDK distribution | string | ms |
| installGradle | Install Gradle, a build automation tool for multi-language software development | boolean | false | | 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 | | installMaven | Install Maven, a management tool for Java | boolean | false |
| mavenVersion | Select or enter a Maven version | string | latest |
## License ## License
......
{ {
"id": "java", "id": "java",
"version": "1.0.11", "version": "1.1.0",
"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.",
...@@ -33,10 +33,32 @@ ...@@ -33,10 +33,32 @@
"default": false, "default": false,
"description": "Install Gradle, a build automation tool for multi-language software development" "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": { "installMaven": {
"type": "boolean", "type": "boolean",
"default": false, "default": false,
"description": "Install Maven, a management tool for Java" "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", "buildArg": "_VSC_INSTALL_JAVA",
......
...@@ -11,7 +11,9 @@ ...@@ -11,7 +11,9 @@
JAVA_VERSION=${VERSION:-"lts"} JAVA_VERSION=${VERSION:-"lts"}
INSTALL_GRADLE=${INSTALLGRADLE:-"false"} INSTALL_GRADLE=${INSTALLGRADLE:-"false"}
GRADLE_VERSION=${GRADLEVERSION:-"latest"}
INSTALL_MAVEN=${INSTALLMAVEN:-"false"} INSTALL_MAVEN=${INSTALLMAVEN:-"false"}
MAVEN_VERSION=${MAVENVERSION:-"latest"}
JDK_DISTRO=${JDKDISTRO} JDK_DISTRO=${JDKDISTRO}
export SDKMAN_DIR=${SDKMAN_DIR:-"/usr/local/sdkman"} export SDKMAN_DIR=${SDKMAN_DIR:-"/usr/local/sdkman"}
...@@ -173,12 +175,12 @@ fi ...@@ -173,12 +175,12 @@ fi
# Install Gradle # Install Gradle
if [[ "${INSTALL_GRADLE}" = "true" ]] && ! gradle --version > /dev/null; then if [[ "${INSTALL_GRADLE}" = "true" ]] && ! gradle --version > /dev/null; then
sdk_install gradle latest sdk_install gradle ${GRADLE_VERSION}
fi fi
# Install Maven # Install Maven
if [[ "${INSTALL_MAVEN}" = "true" ]] && ! mvn --version > /dev/null; then if [[ "${INSTALL_MAVEN}" = "true" ]] && ! mvn --version > /dev/null; then
sdk_install maven latest sdk_install maven ${MAVEN_VERSION}
fi fi
# Clean up # Clean up
......
...@@ -5,9 +5,9 @@ set -e ...@@ -5,9 +5,9 @@ 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 18 installed as default" java --version | grep 18 check "java version 11 installed as default" grep "11\." <(java --version)
check "java version 11 installed" ls /usr/local/sdkman/candidates/java | grep 11 check "java version 17 installed" grep "^17\." <(ls /usr/local/sdkman/candidates/java)
check "java version 8 installed" ls /usr/local/sdkman/candidates/java | grep 8 check "java version 8 installed" grep "^8\." <(ls /usr/local/sdkman/candidates/java)
# Report result # Report result
reportResults reportResults
...@@ -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 18 installed as default" java --version | grep 18 check "java version openjdk 11 installed" grep "openjdk 11." <(java --version)
# Report result # Report result
reportResults reportResults
...@@ -5,17 +5,17 @@ set -e ...@@ -5,17 +5,17 @@ set -e
# Optional: Import test library # Optional: Import test library
source dev-container-features-test-lib 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 "java" java --version
check "gradle" gradle --version check "gradle" gradle --version
cd /tmp && gradle init --type basic --dsl groovy --incubating --project-name test 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 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 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 # Report result
reportResults reportResults
...@@ -5,17 +5,17 @@ set -e ...@@ -5,17 +5,17 @@ set -e
# Optional: Import test library # Optional: Import test library
source dev-container-features-test-lib 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 "java" java --version
check "gradle" gradle --version check "gradle" gradle --version
cd /tmp && gradle init --type basic --dsl groovy --incubating --project-name test 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 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 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 # Report result
reportResults 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 @@ ...@@ -3,7 +3,7 @@
"image": "ubuntu:focal", "image": "ubuntu:focal",
"features": { "features": {
"java": { "java": {
"version": "18", "version": "11",
"jdkDistro": "open" "jdkDistro": "open"
} }
} }
...@@ -12,8 +12,8 @@ ...@@ -12,8 +12,8 @@
"image": "ubuntu:focal", "image": "ubuntu:focal",
"features": { "features": {
"java": { "java": {
"version": "18", "version": "11",
"additionalVersions": "11,8" "additionalVersions": "17,8"
} }
} }
}, },
...@@ -40,5 +40,17 @@ ...@@ -40,5 +40,17 @@
"installMaven": true "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