Skip to content

Commit 86030b3

Browse files
committed
Adds support for java 17 in generated projects codestart
Adding support to java versions lts Updated template of builds for support java 17 Fixs imports Remove sysout Change codestart dockerfiles to use openjdk-xx-runtime Remove no longer needed RUN_JAVA_VERSION Fixs code formatting Fixs of code review Remove the conversion to integer from the java_version Remove java 8 and set java 11 to default Fixs tests of codestarts generation
1 parent 2764b1f commit 86030b3

File tree

9 files changed

+62
-50
lines changed

9 files changed

+62
-50
lines changed

independent-projects/tools/base-codestarts/src/main/resources/codestarts/quarkus/buildtool/gradle-kotlin-dsl/base/build-layout.include.qute

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,9 @@ java {
5353
{#if java.version == "11"}
5454
sourceCompatibility = JavaVersion.VERSION_11
5555
targetCompatibility = JavaVersion.VERSION_11
56+
{#else if java.version == "17"}
57+
sourceCompatibility = JavaVersion.VERSION_17
58+
targetCompatibility = JavaVersion.VERSION_17
5659
{#else}
5760
sourceCompatibility = JavaVersion.VERSION_1_8
5861
targetCompatibility = JavaVersion.VERSION_1_8

independent-projects/tools/base-codestarts/src/main/resources/codestarts/quarkus/buildtool/gradle/base/build-layout.include.qute

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,9 @@ java {
4949
{#if java.version == "11"}
5050
sourceCompatibility = JavaVersion.VERSION_11
5151
targetCompatibility = JavaVersion.VERSION_11
52+
{#else if java.version == "17"}
53+
sourceCompatibility = JavaVersion.VERSION_17
54+
targetCompatibility = JavaVersion.VERSION_17
5255
{#else}
5356
sourceCompatibility = JavaVersion.VERSION_1_8
5457
targetCompatibility = JavaVersion.VERSION_1_8

independent-projects/tools/base-codestarts/src/main/resources/codestarts/quarkus/tooling/dockerfiles/base/Dockerfile-layout.include.qute

Lines changed: 5 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -18,31 +18,18 @@
1818
#
1919
# Then run the container using :
2020
#
21-
# docker run -i --rm -p 8080:8080 -p 5005:5005 -e JAVA_ENABLE_DEBUG="true" quarkus/{project.artifact-id}-{type}
21+
# docker run -i --rm -p 8080:8080 quarkus/{project.artifact-id}-{type}
2222
#
2323
###
24-
FROM {#insert image /}
25-
{#insert args /}
24+
FROM registry.access.redhat.com/ubi8/openjdk-{java.version}-runtime:1.10
25+
2626
ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en'
27-
# Install java and the run-java script
28-
# Also set up permissions for user `1001`
29-
RUN microdnf install curl ca-certificates $\{JAVA_PACKAGE} \
30-
&& microdnf update \
31-
&& microdnf clean all \
32-
&& mkdir /deployments \
33-
&& chown 1001 /deployments \
34-
&& chmod "g+rwX" /deployments \
35-
&& chown 1001:root /deployments \
36-
&& curl https://repo1.maven.org/maven2/io/fabric8/run-java-sh/$\{RUN_JAVA_VERSION}/run-java-sh-$\{RUN_JAVA_VERSION}-sh.sh -o /deployments/run-java.sh \
37-
&& chown 1001 /deployments/run-java.sh \
38-
&& chmod 540 /deployments/run-java.sh \
39-
&& echo "securerandom.source=file:/dev/urandom" >> /etc/alternatives/jre/conf/security/java.security
4027

4128
# Configure the JAVA_OPTIONS, you can add -XshowSettings:vm to also display the heap size.
4229
ENV JAVA_OPTIONS="-Dquarkus.http.host=0.0.0.0 -Djava.util.logging.manager=org.jboss.logmanager.LogManager"
4330
{#insert copy /}
4431

4532
EXPOSE 8080
46-
USER 1001
33+
USER 185
4734

48-
ENTRYPOINT [ "/deployments/run-java.sh" ]
35+
ENTRYPOINT [ "java", "-jar", "/deployments/quarkus-run.jar" ]
Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,11 @@
11
{#include Dockerfile-layout type='jvm'}
22
{#quarkusbuild}{buildtool.cli} {buildtool.cmd.package}{/quarkusbuild}
3-
{#image}{dockerfile.jvm.from} {/image}
4-
{#args}
5-
ARG JAVA_PACKAGE={dockerfile.jvm.java-package}
6-
ARG RUN_JAVA_VERSION={dockerfile.jvm.run-java-version}
7-
{/args}
83
{#copy}
94
# We make four distinct layers so if there are application changes the library layers can be re-used
10-
COPY --chown=1001 {buildtool.build-dir}/quarkus-app/lib/ /deployments/lib/
11-
COPY --chown=1001 {buildtool.build-dir}/quarkus-app/*.jar /deployments/
12-
COPY --chown=1001 {buildtool.build-dir}/quarkus-app/app/ /deployments/app/
13-
COPY --chown=1001 {buildtool.build-dir}/quarkus-app/quarkus/ /deployments/quarkus/
5+
COPY --chown=185 {buildtool.build-dir}/quarkus-app/lib/ /deployments/lib/
6+
COPY --chown=185 {buildtool.build-dir}/quarkus-app/*.jar /deployments/
7+
COPY --chown=185 {buildtool.build-dir}/quarkus-app/app/ /deployments/app/
8+
COPY --chown=185 {buildtool.build-dir}/quarkus-app/quarkus/ /deployments/quarkus/
149
{/copy}
1510
{/include}
1611

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,7 @@
11
{#include Dockerfile-layout type='legacy-jar'}
22
{#quarkusbuild}{buildtool.cli} {buildtool.cmd.package-legacy-jar}{/quarkusbuild}
3-
{#image}{dockerfile.legacy-jar.from} {/image}
4-
{#args}
5-
ARG JAVA_PACKAGE={dockerfile.legacy-jar.java-package}
6-
ARG RUN_JAVA_VERSION={dockerfile.legacy-jar.run-java-version}
7-
{/args}
83
{#copy}
94
COPY {buildtool.build-dir}/lib/* /deployments/lib/
10-
COPY {buildtool.build-dir}/*-runner.jar /deployments/app.jar
5+
COPY {buildtool.build-dir}/*-runner.jar /deployments/quarkus-run.jar
116
{/copy}
127
{/include}

independent-projects/tools/base-codestarts/src/main/resources/codestarts/quarkus/tooling/dockerfiles/codestart.yml

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,6 @@ language:
44
base:
55
data:
66
dockerfile:
7-
jvm:
8-
from: registry.access.redhat.com/ubi8/ubi-minimal:8.4
9-
java-package: java-11-openjdk-headless
10-
run-java-version: 1.3.8
11-
legacy-jar:
12-
from: registry.access.redhat.com/ubi8/ubi-minimal:8.4
13-
java-package: java-11-openjdk-headless
14-
run-java-version: 1.3.8
157
native:
168
from: registry.access.redhat.com/ubi8/ubi-minimal:8.4
179
native-distroless:

independent-projects/tools/devtools-common/src/main/java/io/quarkus/devtools/project/codegen/CreateProjectHelper.java

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import java.nio.file.Path;
99
import java.util.Collection;
1010
import java.util.HashSet;
11+
import java.util.List;
1112
import java.util.Map;
1213
import java.util.Objects;
1314
import java.util.Optional;
@@ -18,6 +19,9 @@
1819
import javax.lang.model.SourceVersion;
1920

2021
public class CreateProjectHelper {
22+
23+
private static final List<String> JAVA_VERSIONS_LTS = List.of("11", "17");
24+
private static final String DEFAULT_JAVA_VERSION = "11";
2125
private static final Pattern JAVA_VERSION_PATTERN = Pattern.compile("(?:1\\.)?(\\d+)(?:\\..*)?");
2226

2327
public static final String DEFAULT_GROUP_ID = "org.acme";
@@ -78,10 +82,15 @@ public static void setJavaVersion(Map<String, Object> values, String javaTarget)
7882

7983
Matcher matcher = JAVA_VERSION_PATTERN
8084
.matcher(javaTarget != null ? javaTarget : System.getProperty("java.version", ""));
81-
if (matcher.matches() && Integer.parseInt(matcher.group(1)) < 11) {
82-
values.put(ProjectGenerator.JAVA_TARGET, "8");
85+
86+
if (matcher.matches()) {
87+
String versionExtracted = matcher.group(1);
88+
String version = JAVA_VERSIONS_LTS.stream()
89+
.filter(e -> e.equals(versionExtracted))
90+
.findFirst().orElse(DEFAULT_JAVA_VERSION);
91+
values.put(ProjectGenerator.JAVA_TARGET, version);
8392
} else {
84-
values.put(ProjectGenerator.JAVA_TARGET, "11");
93+
values.put(ProjectGenerator.JAVA_TARGET, DEFAULT_JAVA_VERSION);
8594
}
8695
}
8796

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package io.quarkus.devtools.project.codegen;
2+
3+
import static org.junit.jupiter.api.Assertions.assertEquals;
4+
5+
import java.util.HashMap;
6+
import java.util.Map;
7+
import org.junit.jupiter.api.Test;
8+
9+
class CreateProjectHelperTest {
10+
11+
@Test
12+
public void givenJavaVersion17ShouldReturn17() {
13+
Map<String, Object> values = new HashMap<>();
14+
values.put("nonull", "nonull");
15+
16+
CreateProjectHelper.setJavaVersion(values, "17");
17+
assertEquals("17", values.get("java_target"));
18+
}
19+
20+
@Test
21+
public void givenJavaVersion16ShouldReturn11() {
22+
Map<String, Object> values = new HashMap<>();
23+
values.put("nonull", "nonull");
24+
25+
CreateProjectHelper.setJavaVersion(values, "16.0.1");
26+
assertEquals("11", values.get("java_target"));
27+
}
28+
}

independent-projects/tools/devtools-testing/src/test/java/io/quarkus/devtools/codestarts/quarkus/QuarkusCodestartGenerationTest.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -276,15 +276,15 @@ private void checkDockerfilesWithMaven(Path projectDir) {
276276
assertThat(projectDir.resolve("src/main/docker/Dockerfile.jvm")).exists()
277277
.satisfies(checkContains("./mvnw package"))
278278
.satisfies(checkContains("docker build -f src/main/docker/Dockerfile.jvm"))
279-
.satisfies(checkContains("registry.access.redhat.com/ubi8/ubi-minimal:8.4"))
280-
.satisfies(checkContains("ARG JAVA_PACKAGE=java-11-openjdk-headless"))
281-
.satisfies(checkContains("ENTRYPOINT [ \"/deployments/run-java.sh\" ]"));
279+
.satisfies(checkContains("registry.access.redhat.com/ubi8/openjdk-11-runtime:1.10"))//TODO: make a teste to java17
280+
.satisfies(checkContains("ENTRYPOINT [ \"java\", \"-jar\", \"/deployments/quarkus-run.jar\" ]"));
282281
assertThat(projectDir.resolve("src/main/docker/Dockerfile.legacy-jar")).exists()
283282
.satisfies(checkContains("./mvnw package -Dquarkus.package.type=legacy-jar"))
284283
.satisfies(checkContains("docker build -f src/main/docker/Dockerfile.legacy-jar"))
285-
.satisfies(checkContains("registry.access.redhat.com/ubi8/ubi-minimal:8.4"))
286-
.satisfies(checkContains("ARG JAVA_PACKAGE=java-11-openjdk-headless"))
287-
.satisfies(checkContains("ENTRYPOINT [ \"/deployments/run-java.sh\" ]"));
284+
.satisfies(checkContains("registry.access.redhat.com/ubi8/openjdk-11-runtime:1.10"))
285+
.satisfies(checkContains("EXPOSE 8080"))
286+
.satisfies(checkContains("USER 185"))
287+
.satisfies(checkContains("ENTRYPOINT [ \"java\", \"-jar\", \"/deployments/quarkus-run.jar\" ]"));
288288
assertThat(projectDir.resolve("src/main/docker/Dockerfile.native")).exists()
289289
.satisfies(checkContains("./mvnw package -Pnative"))
290290
.satisfies(checkContains("registry.access.redhat.com/ubi8/ubi-minimal:8.4"))

0 commit comments

Comments
 (0)