Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions src/java/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,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

Expand Down
24 changes: 23 additions & 1 deletion src/java/devcontainer-feature.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"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.",
Expand Down Expand Up @@ -33,10 +33,32 @@
"default": false,
"description": "Install Gradle, a build automation tool for multi-language software development"
},
"gradleVersion": {
Comment thread
etienne-chrp marked this conversation as resolved.
"type": "string",
Comment thread
etienne-chrp marked this conversation as resolved.
"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",
Expand Down
6 changes: 4 additions & 2 deletions src/java/install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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"}
Expand Down Expand Up @@ -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
Expand Down
6 changes: 3 additions & 3 deletions test/java/install_additional_java.sh
Original file line number Diff line number Diff line change
Expand 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
2 changes: 1 addition & 1 deletion test/java/install_from_non_default_distro.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
6 changes: 3 additions & 3 deletions test/java/install_gradle_and_maven.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
6 changes: 3 additions & 3 deletions test/java/install_gradle_and_maven_for_user.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
21 changes: 21 additions & 0 deletions test/java/install_gradle_and_maven_with_specific_version.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
#!/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
18 changes: 15 additions & 3 deletions test/java/scenarios.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"image": "ubuntu:focal",
"features": {
"java": {
"version": "18",
"version": "11",
"jdkDistro": "open"
}
}
Expand All @@ -12,8 +12,8 @@
"image": "ubuntu:focal",
"features": {
"java": {
"version": "18",
"additionalVersions": "11,8"
"version": "11",
"additionalVersions": "17,8"
}
}
},
Expand All @@ -40,5 +40,17 @@
"installMaven": true
}
}
},
"install_gradle_and_maven_with_specific_version": {
Comment thread
etienne-chrp marked this conversation as resolved.
"image": "ubuntu:focal",
"features": {
"java": {
"version": "latest",
"installGradle": "true",
"gradleVersion": "6.8.3",
"installMaven": "true",
"mavenVersion": "3.6.3"
}
}
}
}