From 31ee460a0a9402b9ca3d37ff811809d04718af76 Mon Sep 17 00:00:00 2001 From: Sergey Ivanov Date: Mon, 5 Jan 2026 09:17:22 +0400 Subject: [PATCH 1/9] Update project for Java 21 --- Dockerfile | 2 +- build.sh | 2 +- pom.xml | 10 +++++++++- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index 6f68fe0..b7a9026 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM eclipse-temurin:8-jdk-alpine +FROM eclipse-temurin:21-jdk-alpine VOLUME /tmp COPY target/botplatform-0.0.1-SNAPSHOT.jar app.jar RUN apk update \ diff --git a/build.sh b/build.sh index 668c360..e65bb44 100644 --- a/build.sh +++ b/build.sh @@ -1,4 +1,4 @@ mvn clean install docker build -f Dockerfile -t mrmigles/pakhombot:latest . -docker push mrmigles/pakhombot:latest \ No newline at end of file +docker push mrmigles/pakhombot:latest diff --git a/pom.xml b/pom.xml index efb6f0a..58799f0 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ UTF-8 UTF-8 - 1.8 + 21 @@ -194,6 +194,14 @@ + + org.apache.maven.plugins + maven-compiler-plugin + 3.11.0 + + 21 + + org.springframework.boot spring-boot-maven-plugin From 13434d18515c3023a22a0cc71ea900b2ebab4966 Mon Sep 17 00:00:00 2001 From: Sergey Ivanov Date: Mon, 5 Jan 2026 09:26:06 +0400 Subject: [PATCH 2/9] Ensure Java 21 toolchain and docker build --- .mvn/toolchains.xml | 12 ++++++++ .mvn/wrapper/maven-wrapper.properties | 2 +- Dockerfile | 20 ++++++++++++-- build.sh | 2 -- pom.xml | 40 +++++++++++++++++++++++++++ 5 files changed, 71 insertions(+), 5 deletions(-) create mode 100644 .mvn/toolchains.xml diff --git a/.mvn/toolchains.xml b/.mvn/toolchains.xml new file mode 100644 index 0000000..5ce8487 --- /dev/null +++ b/.mvn/toolchains.xml @@ -0,0 +1,12 @@ + + + + jdk + + 21 + + + ${env.JAVA_HOME} + + + diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties index c954cec..4465bd9 100644 --- a/.mvn/wrapper/maven-wrapper.properties +++ b/.mvn/wrapper/maven-wrapper.properties @@ -1 +1 @@ -distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.3.9/apache-maven-3.3.9-bin.zip +distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.9.6/apache-maven-3.9.6-bin.zip diff --git a/Dockerfile b/Dockerfile index b7a9026..192a5f9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,8 +1,24 @@ +FROM maven:3.9.6-eclipse-temurin-21 as builder +WORKDIR /workspace +COPY pom.xml . +COPY src ./src +RUN mvn -B -e -DskipTests clean package + FROM eclipse-temurin:21-jdk-alpine VOLUME /tmp -COPY target/botplatform-0.0.1-SNAPSHOT.jar app.jar +COPY --from=builder /workspace/target/botplatform-0.0.1-SNAPSHOT.jar /app.jar RUN apk update \ && apk add --no-cache ca-certificates fontconfig ttf-dejavu \ && update-ca-certificates \ && rm -rf /var/cache/apk/* -ENTRYPOINT ["java","-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] +ENTRYPOINT ["java", + "--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.net=ALL-UNNAMED", + "--add-opens=java.base/java.util=ALL-UNNAMED", + "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005", + "-Djava.security.egd=file:/dev/./urandom", + "-jar", + "/app.jar"] diff --git a/build.sh b/build.sh index e65bb44..90173c6 100644 --- a/build.sh +++ b/build.sh @@ -1,4 +1,2 @@ -mvn clean install - docker build -f Dockerfile -t mrmigles/pakhombot:latest . docker push mrmigles/pakhombot:latest diff --git a/pom.xml b/pom.xml index 58799f0..c052e95 100644 --- a/pom.xml +++ b/pom.xml @@ -194,6 +194,27 @@ + + org.apache.maven.plugins + maven-enforcer-plugin + 3.4.1 + + + enforce-java + + enforce + + + + + 21 + + + true + + + + org.apache.maven.plugins maven-compiler-plugin @@ -202,6 +223,25 @@ 21 + + org.apache.maven.plugins + maven-toolchains-plugin + 3.2.0 + + + + toolchain + + + + + 21 + + + + + + org.springframework.boot spring-boot-maven-plugin From dc491f816f6ff1ffe2c2d587c3ed3e044e4502f2 Mon Sep 17 00:00:00 2001 From: Sergey Ivanov Date: Mon, 5 Jan 2026 09:26:11 +0400 Subject: [PATCH 3/9] Update GitHub workflows for Java 21 --- .github/workflows/maven.yml | 16 +++++++++------- .github/workflows/portainer-deploy.yml | 4 ++-- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index 4140568..8081566 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -11,14 +11,16 @@ on: jobs: build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - name: Set up JDK 1.8 - uses: actions/setup-java@v1 + - uses: actions/checkout@v4 + + - name: Set up JDK 21 + uses: actions/setup-java@v4 with: - java-version: 1.8 + distribution: temurin + java-version: '21' + cache: maven + - name: Build with Maven - run: mvn -B package --file pom.xml + run: ./mvnw -B -ntp verify diff --git a/.github/workflows/portainer-deploy.yml b/.github/workflows/portainer-deploy.yml index 34df925..89c9f8d 100644 --- a/.github/workflows/portainer-deploy.yml +++ b/.github/workflows/portainer-deploy.yml @@ -27,14 +27,14 @@ jobs: uses: actions/setup-java@v4 with: distribution: temurin - java-version: '8' + java-version: '21' cache: maven - name: Make Maven wrapper executable run: chmod +x mvnw - name: Build application - run: ./mvnw -B package -DskipTests + run: ./mvnw -B -ntp package -DskipTests - name: Log in to GitHub Container Registry uses: docker/login-action@v3 From 51c742b102fea55792e2d5b7640da78e530c8e0d Mon Sep 17 00:00:00 2001 From: Sergey Ivanov Date: Mon, 5 Jan 2026 09:56:29 +0400 Subject: [PATCH 4/9] Fix Lombok compilation on Java 21 --- .mvn/jvm.config | 10 ++++++++++ Dockerfile | 1 + pom.xml | 12 ++++++++++++ 3 files changed, 23 insertions(+) create mode 100644 .mvn/jvm.config diff --git a/.mvn/jvm.config b/.mvn/jvm.config new file mode 100644 index 0000000..a8014d4 --- /dev/null +++ b/.mvn/jvm.config @@ -0,0 +1,10 @@ +--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 diff --git a/Dockerfile b/Dockerfile index 192a5f9..c36328f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,6 @@ FROM maven:3.9.6-eclipse-temurin-21 as builder WORKDIR /workspace +COPY .mvn ./.mvn COPY pom.xml . COPY src ./src RUN mvn -B -e -DskipTests clean package diff --git a/pom.xml b/pom.xml index c052e95..c8bc7e6 100644 --- a/pom.xml +++ b/pom.xml @@ -221,6 +221,18 @@ 3.11.0 21 + + --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 + From e55be6fc12d2cae511ec1ade7dfd5f5bc3bd541d Mon Sep 17 00:00:00 2001 From: Sergey Ivanov Date: Mon, 5 Jan 2026 10:09:45 +0400 Subject: [PATCH 5/9] Update Lombok for Java 21 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index c8bc7e6..e4499c1 100644 --- a/pom.xml +++ b/pom.xml @@ -162,7 +162,7 @@ org.projectlombok lombok - 1.16.22 + 1.18.36 org.codehaus.groovy From 5d35baa09b41b109b6e800e8ea5b07dca80ed7d4 Mon Sep 17 00:00:00 2001 From: Sergey Ivanov Date: Mon, 5 Jan 2026 10:35:38 +0400 Subject: [PATCH 6/9] Update Groovy and surefire for Java 21 --- pom.xml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index e4499c1..4f04bee 100644 --- a/pom.xml +++ b/pom.xml @@ -167,7 +167,7 @@ org.codehaus.groovy groovy-all - 2.3.0 + 4.0.21 @@ -235,6 +235,14 @@ + + org.apache.maven.plugins + maven-surefire-plugin + 3.2.5 + + --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 + + org.apache.maven.plugins maven-toolchains-plugin From 8b3b19fc3b2f119a96926e25c70f76392c67d602 Mon Sep 17 00:00:00 2001 From: Sergey Ivanov Date: Mon, 5 Jan 2026 13:30:27 +0400 Subject: [PATCH 7/9] Use stable surefire plugin version --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 4f04bee..56523b2 100644 --- a/pom.xml +++ b/pom.xml @@ -238,7 +238,7 @@ org.apache.maven.plugins maven-surefire-plugin - 3.2.5 + 3.2.2 --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 From 2b84e3cb2a1616d6c7598c91192304197528168e Mon Sep 17 00:00:00 2001 From: Sergey Ivanov Date: Mon, 5 Jan 2026 14:16:03 +0400 Subject: [PATCH 8/9] Use Apache Groovy BOM --- pom.xml | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index 56523b2..9caed74 100644 --- a/pom.xml +++ b/pom.xml @@ -21,8 +21,21 @@ UTF-8 UTF-8 21 + 4.0.20 + + + + org.apache.groovy + groovy-bom + ${groovy.version} + pom + import + + + + central @@ -165,9 +178,8 @@ 1.18.36 - org.codehaus.groovy - groovy-all - 4.0.21 + org.apache.groovy + groovy From 8eaa3d3d1fc669028a1b517da076f7e058cb1f49 Mon Sep 17 00:00:00 2001 From: Sergey Ivanov Date: Mon, 5 Jan 2026 14:44:29 +0400 Subject: [PATCH 9/9] Improve Java 21 test runtime --- .mvn/jvm.config | 5 +++++ pom.xml | 8 +++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/.mvn/jvm.config b/.mvn/jvm.config index a8014d4..c23a95a 100644 --- a/.mvn/jvm.config +++ b/.mvn/jvm.config @@ -8,3 +8,8 @@ --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 +--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 diff --git a/pom.xml b/pom.xml index 9caed74..706258b 100644 --- a/pom.xml +++ b/pom.xml @@ -65,6 +65,12 @@ spring-boot-starter-test test + + org.mockito + mockito-core + 5.14.0 + test + org.springframework.boot spring-boot-starter-data-mongodb @@ -252,7 +258,7 @@ maven-surefire-plugin 3.2.2 - --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 + --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