Skip to content

Commit fdc80cb

Browse files
authored
Update project for Java 21 (#25)
* Update project for Java 21 * Ensure Java 21 toolchain and docker build * Update GitHub workflows for Java 21 * Fix Lombok compilation on Java 21 * Update Lombok for Java 21 * Update Groovy and surefire for Java 21 * Use stable surefire plugin version * Use Apache Groovy BOM * Improve Java 21 test runtime
1 parent 20c4809 commit fdc80cb

8 files changed

Lines changed: 151 additions & 21 deletions

File tree

.github/workflows/maven.yml

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,16 @@ on:
1111

1212
jobs:
1313
build:
14-
1514
runs-on: ubuntu-latest
16-
1715
steps:
18-
- uses: actions/checkout@v2
19-
- name: Set up JDK 1.8
20-
uses: actions/setup-java@v1
16+
- uses: actions/checkout@v4
17+
18+
- name: Set up JDK 21
19+
uses: actions/setup-java@v4
2120
with:
22-
java-version: 1.8
21+
distribution: temurin
22+
java-version: '21'
23+
cache: maven
24+
2325
- name: Build with Maven
24-
run: mvn -B package --file pom.xml
26+
run: ./mvnw -B -ntp verify

.github/workflows/portainer-deploy.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,14 @@ jobs:
2727
uses: actions/setup-java@v4
2828
with:
2929
distribution: temurin
30-
java-version: '8'
30+
java-version: '21'
3131
cache: maven
3232

3333
- name: Make Maven wrapper executable
3434
run: chmod +x mvnw
3535

3636
- name: Build application
37-
run: ./mvnw -B package -DskipTests
37+
run: ./mvnw -B -ntp package -DskipTests
3838

3939
- name: Log in to GitHub Container Registry
4040
uses: docker/login-action@v3

.mvn/jvm.config

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
--add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED
2+
--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED
3+
--add-opens=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED
4+
--add-opens=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED
5+
--add-opens=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED
6+
--add-opens=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED
7+
--add-opens=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED
8+
--add-opens=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED
9+
--add-opens=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED
10+
--add-opens=jdk.compiler/com.sun.tools.javac.jvm=ALL-UNNAMED
11+
--add-opens=java.base/java.lang=ALL-UNNAMED
12+
--add-opens=java.base/java.lang.invoke=ALL-UNNAMED
13+
--add-opens=java.base/java.lang.reflect=ALL-UNNAMED
14+
--add-opens=java.base/java.io=ALL-UNNAMED
15+
--add-opens=java.base/java.util=ALL-UNNAMED

.mvn/toolchains.xml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<toolchains>
3+
<toolchain>
4+
<type>jdk</type>
5+
<provides>
6+
<version>21</version>
7+
</provides>
8+
<configuration>
9+
<jdkHome>${env.JAVA_HOME}</jdkHome>
10+
</configuration>
11+
</toolchain>
12+
</toolchains>
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.3.9/apache-maven-3.3.9-bin.zip
1+
distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.9.6/apache-maven-3.9.6-bin.zip

Dockerfile

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,25 @@
1-
FROM eclipse-temurin:8-jdk-alpine
1+
FROM maven:3.9.6-eclipse-temurin-21 as builder
2+
WORKDIR /workspace
3+
COPY .mvn ./.mvn
4+
COPY pom.xml .
5+
COPY src ./src
6+
RUN mvn -B -e -DskipTests clean package
7+
8+
FROM eclipse-temurin:21-jdk-alpine
29
VOLUME /tmp
3-
COPY target/botplatform-0.0.1-SNAPSHOT.jar app.jar
10+
COPY --from=builder /workspace/target/botplatform-0.0.1-SNAPSHOT.jar /app.jar
411
RUN apk update \
512
&& apk add --no-cache ca-certificates fontconfig ttf-dejavu \
613
&& update-ca-certificates \
714
&& rm -rf /var/cache/apk/*
8-
ENTRYPOINT ["java","-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
15+
ENTRYPOINT ["java",
16+
"--add-opens=java.base/java.lang=ALL-UNNAMED",
17+
"--add-opens=java.base/java.lang.invoke=ALL-UNNAMED",
18+
"--add-opens=java.base/java.lang.reflect=ALL-UNNAMED",
19+
"--add-opens=java.base/java.io=ALL-UNNAMED",
20+
"--add-opens=java.base/java.net=ALL-UNNAMED",
21+
"--add-opens=java.base/java.util=ALL-UNNAMED",
22+
"-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005",
23+
"-Djava.security.egd=file:/dev/./urandom",
24+
"-jar",
25+
"/app.jar"]

build.sh

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,2 @@
1-
mvn clean install
2-
31
docker build -f Dockerfile -t mrmigles/pakhombot:latest .
4-
docker push mrmigles/pakhombot:latest
2+
docker push mrmigles/pakhombot:latest

pom.xml

Lines changed: 91 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,22 @@
2020
<properties>
2121
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
2222
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
23-
<java.version>1.8</java.version>
23+
<java.version>21</java.version>
24+
<groovy.version>4.0.20</groovy.version>
2425
</properties>
2526

27+
<dependencyManagement>
28+
<dependencies>
29+
<dependency>
30+
<groupId>org.apache.groovy</groupId>
31+
<artifactId>groovy-bom</artifactId>
32+
<version>${groovy.version}</version>
33+
<type>pom</type>
34+
<scope>import</scope>
35+
</dependency>
36+
</dependencies>
37+
</dependencyManagement>
38+
2639
<repositories>
2740
<repository>
2841
<id>central</id>
@@ -52,6 +65,12 @@
5265
<artifactId>spring-boot-starter-test</artifactId>
5366
<scope>test</scope>
5467
</dependency>
68+
<dependency>
69+
<groupId>org.mockito</groupId>
70+
<artifactId>mockito-core</artifactId>
71+
<version>5.14.0</version>
72+
<scope>test</scope>
73+
</dependency>
5574
<dependency>
5675
<groupId>org.springframework.boot</groupId>
5776
<artifactId>spring-boot-starter-data-mongodb</artifactId>
@@ -162,12 +181,11 @@
162181
<dependency>
163182
<groupId>org.projectlombok</groupId>
164183
<artifactId>lombok</artifactId>
165-
<version>1.16.22</version>
184+
<version>1.18.36</version>
166185
</dependency>
167186
<dependency>
168-
<groupId>org.codehaus.groovy</groupId>
169-
<artifactId>groovy-all</artifactId>
170-
<version>2.3.0</version>
187+
<groupId>org.apache.groovy</groupId>
188+
<artifactId>groovy</artifactId>
171189
</dependency>
172190

173191
<dependency>
@@ -194,6 +212,74 @@
194212

195213
<build>
196214
<plugins>
215+
<plugin>
216+
<groupId>org.apache.maven.plugins</groupId>
217+
<artifactId>maven-enforcer-plugin</artifactId>
218+
<version>3.4.1</version>
219+
<executions>
220+
<execution>
221+
<id>enforce-java</id>
222+
<goals>
223+
<goal>enforce</goal>
224+
</goals>
225+
<configuration>
226+
<rules>
227+
<requireJavaVersion>
228+
<version>21</version>
229+
</requireJavaVersion>
230+
</rules>
231+
<fail>true</fail>
232+
</configuration>
233+
</execution>
234+
</executions>
235+
</plugin>
236+
<plugin>
237+
<groupId>org.apache.maven.plugins</groupId>
238+
<artifactId>maven-compiler-plugin</artifactId>
239+
<version>3.11.0</version>
240+
<configuration>
241+
<release>21</release>
242+
<compilerArgs>
243+
<arg>--add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED</arg>
244+
<arg>--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED</arg>
245+
<arg>--add-opens=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED</arg>
246+
<arg>--add-opens=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED</arg>
247+
<arg>--add-opens=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED</arg>
248+
<arg>--add-opens=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED</arg>
249+
<arg>--add-opens=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED</arg>
250+
<arg>--add-opens=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED</arg>
251+
<arg>--add-opens=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED</arg>
252+
<arg>--add-opens=jdk.compiler/com.sun.tools.javac.jvm=ALL-UNNAMED</arg>
253+
</compilerArgs>
254+
</configuration>
255+
</plugin>
256+
<plugin>
257+
<groupId>org.apache.maven.plugins</groupId>
258+
<artifactId>maven-surefire-plugin</artifactId>
259+
<version>3.2.2</version>
260+
<configuration>
261+
<argLine>--add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED --add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED --add-opens=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED --add-opens=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED --add-opens=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED --add-opens=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED --add-opens=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED --add-opens=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED --add-opens=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED --add-opens=jdk.compiler/com.sun.tools.javac.jvm=ALL-UNNAMED</argLine>
262+
</configuration>
263+
</plugin>
264+
<plugin>
265+
<groupId>org.apache.maven.plugins</groupId>
266+
<artifactId>maven-toolchains-plugin</artifactId>
267+
<version>3.2.0</version>
268+
<executions>
269+
<execution>
270+
<goals>
271+
<goal>toolchain</goal>
272+
</goals>
273+
<configuration>
274+
<toolchains>
275+
<jdk>
276+
<version>21</version>
277+
</jdk>
278+
</toolchains>
279+
</configuration>
280+
</execution>
281+
</executions>
282+
</plugin>
197283
<plugin>
198284
<groupId>org.springframework.boot</groupId>
199285
<artifactId>spring-boot-maven-plugin</artifactId>

0 commit comments

Comments
 (0)