Skip to content

Commit be4f049

Browse files
authored
Add Gradle and Maven version parameters to Java (devcontainers#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
1 parent bff3178 commit be4f049

9 files changed

Lines changed: 75 additions & 16 deletions

src/java/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@ Installs Java, SDKMAN! (if not installed), and needed dependencies.
1818
| version | Select or enter a Java version to install | string | latest |
1919
| jdkDistro | Select or enter a JDK distribution | string | ms |
2020
| installGradle | Install Gradle, a build automation tool for multi-language software development | boolean | false |
21+
| gradleVersion | Select or enter a Gradle version | string | latest |
2122
| installMaven | Install Maven, a management tool for Java | boolean | false |
23+
| mavenVersion | Select or enter a Maven version | string | latest |
2224

2325
## License
2426

src/java/devcontainer-feature.json

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"id": "java",
3-
"version": "1.0.11",
3+
"version": "1.1.0",
44
"name": "Java (via SDKMAN!)",
55
"documentationURL": "https://github.com/devcontainers/features/tree/main/src/java",
66
"description": "Installs Java, SDKMAN! (if not installed), and needed dependencies.",
@@ -33,10 +33,32 @@
3333
"default": false,
3434
"description": "Install Gradle, a build automation tool for multi-language software development"
3535
},
36+
"gradleVersion": {
37+
"type": "string",
38+
"proposals": [
39+
"latest",
40+
"7.5.1",
41+
"6.9.3",
42+
"5.6.4"
43+
],
44+
"default": "latest",
45+
"description": "Select or enter a Gradle version"
46+
},
3647
"installMaven": {
3748
"type": "boolean",
3849
"default": false,
3950
"description": "Install Maven, a management tool for Java"
51+
},
52+
"mavenVersion": {
53+
"type": "string",
54+
"proposals": [
55+
"latest",
56+
"3.8.6",
57+
"3.6.3",
58+
"3.5.4"
59+
],
60+
"default": "latest",
61+
"description": "Select or enter a Maven version"
4062
}
4163
},
4264
"buildArg": "_VSC_INSTALL_JAVA",

src/java/install.sh

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@
1111

1212
JAVA_VERSION=${VERSION:-"lts"}
1313
INSTALL_GRADLE=${INSTALLGRADLE:-"false"}
14+
GRADLE_VERSION=${GRADLEVERSION:-"latest"}
1415
INSTALL_MAVEN=${INSTALLMAVEN:-"false"}
16+
MAVEN_VERSION=${MAVENVERSION:-"latest"}
1517
JDK_DISTRO=${JDKDISTRO}
1618

1719
export SDKMAN_DIR=${SDKMAN_DIR:-"/usr/local/sdkman"}
@@ -173,12 +175,12 @@ fi
173175

174176
# Install Gradle
175177
if [[ "${INSTALL_GRADLE}" = "true" ]] && ! gradle --version > /dev/null; then
176-
sdk_install gradle latest
178+
sdk_install gradle ${GRADLE_VERSION}
177179
fi
178180

179181
# Install Maven
180182
if [[ "${INSTALL_MAVEN}" = "true" ]] && ! mvn --version > /dev/null; then
181-
sdk_install maven latest
183+
sdk_install maven ${MAVEN_VERSION}
182184
fi
183185

184186
# Clean up

test/java/install_additional_java.sh

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ set -e
55
# Optional: Import test library
66
source dev-container-features-test-lib
77

8-
check "java version 18 installed as default" java --version | grep 18
9-
check "java version 11 installed" ls /usr/local/sdkman/candidates/java | grep 11
10-
check "java version 8 installed" ls /usr/local/sdkman/candidates/java | grep 8
8+
check "java version 11 installed as default" grep "11\." <(java --version)
9+
check "java version 17 installed" grep "^17\." <(ls /usr/local/sdkman/candidates/java)
10+
check "java version 8 installed" grep "^8\." <(ls /usr/local/sdkman/candidates/java)
1111

1212
# Report result
1313
reportResults

test/java/install_from_non_default_distro.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ set -e
55
# Optional: Import test library
66
source dev-container-features-test-lib
77

8-
check "java version 18 installed as default" java --version | grep 18
8+
check "java version openjdk 11 installed" grep "openjdk 11." <(java --version)
99

1010
# Report result
1111
reportResults

test/java/install_gradle_and_maven.sh

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,17 @@ set -e
55
# Optional: Import test library
66
source dev-container-features-test-lib
77

8-
check "user is root" whoami | grep root
8+
check "user is root" grep root <(whoami)
99

1010
check "java" java --version
1111
check "gradle" gradle --version
1212

1313
cd /tmp && gradle init --type basic --dsl groovy --incubating --project-name test
14-
check "GRADLE_USER_HOME exists" ls -la /root | grep ".gradle"
14+
check "GRADLE_USER_HOME exists" grep ".gradle" <(ls -la /root)
1515

1616
check "maven" mvn --version
1717
cd /tmp && mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false
18-
check "m2 exists" ls -la /root | grep ".m2"
18+
check "m2 exists" grep ".m2" <(ls -la /root)
1919

2020
# Report result
2121
reportResults

test/java/install_gradle_and_maven_for_user.sh

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,17 @@ set -e
55
# Optional: Import test library
66
source dev-container-features-test-lib
77

8-
check "user is vscode" whoami | grep vscode
8+
check "user is vscode" grep vscode <(whoami)
99

1010
check "java" java --version
1111
check "gradle" gradle --version
1212

1313
cd /tmp && gradle init --type basic --dsl groovy --incubating --project-name test
14-
check "GRADLE_USER_HOME exists" ls -la /home/vscode | grep ".gradle"
14+
check "GRADLE_USER_HOME exists" grep ".gradle" <(ls -la /home/vscode)
1515

1616
check "maven" mvn --version
1717
cd /tmp && mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false
18-
check "m2 exists" ls -la /home/vscode | grep ".m2"
18+
check "m2 exists" grep ".m2" <(ls -la /home/vscode)
1919

2020
# Report result
2121
reportResults
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
#!/bin/bash
2+
3+
set -e
4+
5+
# Optional: Import test library
6+
source dev-container-features-test-lib
7+
8+
check "user is root" grep root <(whoami)
9+
10+
check "java" java --version
11+
check "gradle version" grep "Gradle 6.8.3" <(gradle --version)
12+
13+
cd /tmp && gradle init --type basic --dsl groovy --project-name test
14+
check "GRADLE_USER_HOME exists" grep ".gradle" <(ls -la /root)
15+
16+
check "maven version" grep "Apache Maven 3.6.3" <(mvn --version)
17+
cd /tmp && mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false
18+
check "m2 exists" grep ".m2" <(ls -la /root)
19+
20+
# Report result
21+
reportResults

test/java/scenarios.json

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"image": "ubuntu:focal",
44
"features": {
55
"java": {
6-
"version": "18",
6+
"version": "11",
77
"jdkDistro": "open"
88
}
99
}
@@ -12,8 +12,8 @@
1212
"image": "ubuntu:focal",
1313
"features": {
1414
"java": {
15-
"version": "18",
16-
"additionalVersions": "11,8"
15+
"version": "11",
16+
"additionalVersions": "17,8"
1717
}
1818
}
1919
},
@@ -40,5 +40,17 @@
4040
"installMaven": true
4141
}
4242
}
43+
},
44+
"install_gradle_and_maven_with_specific_version": {
45+
"image": "ubuntu:focal",
46+
"features": {
47+
"java": {
48+
"version": "latest",
49+
"installGradle": "true",
50+
"gradleVersion": "6.8.3",
51+
"installMaven": "true",
52+
"mavenVersion": "3.6.3"
53+
}
54+
}
4355
}
4456
}

0 commit comments

Comments
 (0)