From d78a1534925e7e424355d214c683e946cbb97d05 Mon Sep 17 00:00:00 2001 From: Tobias Gesellchen Date: Wed, 18 Jan 2023 22:24:10 +0100 Subject: Java: add Apache Ant (#409) * Java: add Apache Ant * Update src/java/devcontainer-feature.json Co-authored-by: Samruddhi Khandale * revert the changes in README.md * Add tests for Java/Ant * Fix Java feature version Co-authored-by: Samruddhi Khandale --- src/java/devcontainer-feature.json | 19 +++++++++++++-- src/java/install.sh | 7 ++++++ test/java/install_ant_and_gradle_and_maven.sh | 28 ++++++++++++++++++++++ .../install_ant_and_gradle_and_maven_for_user.sh | 28 ++++++++++++++++++++++ ...t_and_gradle_and_maven_with_specific_version.sh | 28 ++++++++++++++++++++++ test/java/install_gradle_and_maven.sh | 21 ---------------- test/java/install_gradle_and_maven_for_user.sh | 21 ---------------- ...stall_gradle_and_maven_with_specific_version.sh | 21 ---------------- test/java/scenarios.json | 10 +++++--- 9 files changed, 115 insertions(+), 68 deletions(-) create mode 100644 test/java/install_ant_and_gradle_and_maven.sh create mode 100644 test/java/install_ant_and_gradle_and_maven_for_user.sh create mode 100644 test/java/install_ant_and_gradle_and_maven_with_specific_version.sh delete mode 100644 test/java/install_gradle_and_maven.sh delete mode 100644 test/java/install_gradle_and_maven_for_user.sh delete mode 100644 test/java/install_gradle_and_maven_with_specific_version.sh diff --git a/src/java/devcontainer-feature.json b/src/java/devcontainer-feature.json index 113c75d..f55276a 100644 --- a/src/java/devcontainer-feature.json +++ b/src/java/devcontainer-feature.json @@ -1,6 +1,6 @@ { "id": "java", - "version": "1.1.1", + "version": "1.2.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.", @@ -59,6 +59,21 @@ ], "default": "latest", "description": "Select or enter a Maven version" + }, + "installAnt": { + "type": "boolean", + "default": false, + "description": "Install Ant, a software tool for automating software build processes" + }, + "antVersion": { + "type": "string", + "proposals": [ + "latest", + "1.10.12", + "1.9.15" + ], + "default": "latest", + "description": "Select or enter an Ant version" } }, "customizations": { @@ -74,7 +89,7 @@ "containerEnv": { "SDKMAN_DIR": "/usr/local/sdkman", "JAVA_HOME": "/usr/local/sdkman/candidates/java/current", - "PATH": "/usr/local/sdkman/bin:/usr/local/sdkman/candidates/java/current/bin:/usr/local/sdkman/candidates/gradle/current/bin:/usr/local/sdkman/candidates/maven/current/bin:${PATH}" + "PATH": "/usr/local/sdkman/bin:/usr/local/sdkman/candidates/java/current/bin:/usr/local/sdkman/candidates/gradle/current/bin:/usr/local/sdkman/candidates/maven/current/bin:/usr/local/sdkman/candidates/ant/current/bin:${PATH}" }, "installsAfter": [ "ghcr.io/devcontainers/features/common-utils" diff --git a/src/java/install.sh b/src/java/install.sh index bf94963..ea43dd3 100644 --- a/src/java/install.sh +++ b/src/java/install.sh @@ -14,6 +14,8 @@ INSTALL_GRADLE="${INSTALLGRADLE:-"false"}" GRADLE_VERSION="${GRADLEVERSION:-"latest"}" INSTALL_MAVEN="${INSTALLMAVEN:-"false"}" MAVEN_VERSION="${MAVENVERSION:-"latest"}" +INSTALL_ANT="${INSTALLANT:-"false"}" +ANT_VERSION="${ANTVERSION:-"latest"}" JDK_DISTRO="${JDKDISTRO}" export SDKMAN_DIR="${SDKMAN_DIR:-"/usr/local/sdkman"}" @@ -173,6 +175,11 @@ if [ ! -z "${ADDITIONAL_VERSIONS}" ]; then su ${USERNAME} -c ". ${SDKMAN_DIR}/bin/sdkman-init.sh && sdk default java ${JAVA_VERSION}" fi +# Install Ant +if [[ "${INSTALL_ANT}" = "true" ]] && ! ant -version > /dev/null; then + sdk_install ant ${ANT_VERSION} +fi + # Install Gradle if [[ "${INSTALL_GRADLE}" = "true" ]] && ! gradle --version > /dev/null; then sdk_install gradle ${GRADLE_VERSION} diff --git a/test/java/install_ant_and_gradle_and_maven.sh b/test/java/install_ant_and_gradle_and_maven.sh new file mode 100644 index 0000000..599f8d9 --- /dev/null +++ b/test/java/install_ant_and_gradle_and_maven.sh @@ -0,0 +1,28 @@ +#!/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 "ant" ant -version +cat << EOF > /tmp/build.xml + +EOF +cd /tmp && ant init +check "ant-src exists" grep "ant-src" <(ls -la /tmp) + +check "gradle" gradle --version +cd /tmp && gradle init --type basic --dsl groovy --incubating --project-name test +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" grep ".m2" <(ls -la /root) + +# Report result +reportResults diff --git a/test/java/install_ant_and_gradle_and_maven_for_user.sh b/test/java/install_ant_and_gradle_and_maven_for_user.sh new file mode 100644 index 0000000..4e8b431 --- /dev/null +++ b/test/java/install_ant_and_gradle_and_maven_for_user.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +set -e + +# Optional: Import test library +source dev-container-features-test-lib + +check "user is vscode" grep vscode <(whoami) + +check "java" java --version + +check "ant" ant -version +cat << EOF > /tmp/build.xml + +EOF +cd /tmp && ant init +check "ant-src exists" grep "ant-src" <(ls -la /tmp) + +check "gradle" gradle --version +cd /tmp && gradle init --type basic --dsl groovy --incubating --project-name test +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" grep ".m2" <(ls -la /home/vscode) + +# Report result +reportResults diff --git a/test/java/install_ant_and_gradle_and_maven_with_specific_version.sh b/test/java/install_ant_and_gradle_and_maven_with_specific_version.sh new file mode 100644 index 0000000..7727f51 --- /dev/null +++ b/test/java/install_ant_and_gradle_and_maven_with_specific_version.sh @@ -0,0 +1,28 @@ +#!/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 "ant version" grep "Ant(TM) version 1.10.12" <(ant -version) +cat << EOF > /tmp/build.xml + +EOF +cd /tmp && ant init +check "ant-src exists" grep "ant-src" <(ls -la /tmp) + +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 diff --git a/test/java/install_gradle_and_maven.sh b/test/java/install_gradle_and_maven.sh deleted file mode 100644 index 636fd92..0000000 --- a/test/java/install_gradle_and_maven.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/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" gradle --version - -cd /tmp && gradle init --type basic --dsl groovy --incubating --project-name test -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" grep ".m2" <(ls -la /root) - -# Report result -reportResults diff --git a/test/java/install_gradle_and_maven_for_user.sh b/test/java/install_gradle_and_maven_for_user.sh deleted file mode 100644 index b6ea426..0000000 --- a/test/java/install_gradle_and_maven_for_user.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/bash - -set -e - -# Optional: Import test library -source dev-container-features-test-lib - -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" 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" grep ".m2" <(ls -la /home/vscode) - -# Report result -reportResults diff --git a/test/java/install_gradle_and_maven_with_specific_version.sh b/test/java/install_gradle_and_maven_with_specific_version.sh deleted file mode 100644 index c6ae6160..0000000 --- a/test/java/install_gradle_and_maven_with_specific_version.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/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 diff --git a/test/java/scenarios.json b/test/java/scenarios.json index 479ee47..11fb7ba 100644 --- a/test/java/scenarios.json +++ b/test/java/scenarios.json @@ -17,7 +17,7 @@ } } }, - "install_gradle_and_maven_for_user": { + "install_ant_and_gradle_and_maven_for_user": { "image": "ubuntu:focal", "remoteUser": "vscode", "features": { @@ -26,26 +26,30 @@ }, "java": { "version": "latest", + "installAnt": true, "installGradle": true, "installMaven": true } } }, - "install_gradle_and_maven": { + "install_ant_and_gradle_and_maven": { "image": "ubuntu:focal", "features": { "java": { "version": "latest", + "installAnt": true, "installGradle": true, "installMaven": true } } }, - "install_gradle_and_maven_with_specific_version": { + "install_ant_and_gradle_and_maven_with_specific_version": { "image": "ubuntu:focal", "features": { "java": { "version": "latest", + "installAnt": "true", + "antVersion": "1.10.12", "installGradle": "true", "gradleVersion": "6.8.3", "installMaven": "true", -- cgit v1.2.3