This is an automated email from the ASF dual-hosted git repository.
wusheng pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/skywalking-java.git
The following commit(s) were added to refs/heads/main by this push:
new aee6f46cbf Add the JDK 25 support (#783)
aee6f46cbf is described below
commit aee6f46cbfb32ac489e738f9172848ba3a3c238f
Author: peachisai <[email protected]>
AuthorDate: Sun Dec 14 23:36:17 2025 +0800
Add the JDK 25 support (#783)
---
.github/workflows/Dockerfile-tomcat-jdk25-withCurl | 21 ++++++
.github/workflows/ci.yaml | 2 +
.github/workflows/plugins-jdk25-test.0.yaml | 74 ++++++++++++++++++++++
.github/workflows/publish-docker.yaml | 2 +-
CHANGES.md | 3 +
Makefile | 3 +-
docs/en/contribution/compiling.md | 2 +-
.../setup/service-agent/java-agent/Plugin-test.md | 5 ++
docs/en/setup/service-agent/java-agent/README.md | 2 +-
pom.xml | 2 +-
10 files changed, 111 insertions(+), 5 deletions(-)
diff --git a/.github/workflows/Dockerfile-tomcat-jdk25-withCurl
b/.github/workflows/Dockerfile-tomcat-jdk25-withCurl
new file mode 100644
index 0000000000..dc510ffb4c
--- /dev/null
+++ b/.github/workflows/Dockerfile-tomcat-jdk25-withCurl
@@ -0,0 +1,21 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+FROM tomcat:10.1.50-jdk25-temurin
+
+RUN apt-get update \
+ && apt-get install -y --no-install-recommends curl \
+ && rm -rf /var/lib/apt/lists/*
\ No newline at end of file
diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml
index b92e5370de..0bc7a9c0e9 100644
--- a/.github/workflows/ci.yaml
+++ b/.github/workflows/ci.yaml
@@ -52,6 +52,8 @@ jobs:
include:
- os: ubuntu
java-version: 21
+ - os: ubuntu
+ java-version: 25
steps:
- if: matrix.os == 'windows'
name: Support longpaths
diff --git a/.github/workflows/plugins-jdk25-test.0.yaml
b/.github/workflows/plugins-jdk25-test.0.yaml
new file mode 100644
index 0000000000..88c7213101
--- /dev/null
+++ b/.github/workflows/plugins-jdk25-test.0.yaml
@@ -0,0 +1,74 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+name: Test
+
+on:
+ pull_request:
+ paths:
+ - '.github/workflows/plugins-*.yaml'
+ - 'apm-application-toolkit/**'
+ - 'apm-commons/**'
+ - 'apm-protocol/**'
+ - 'apm-sniffer/**'
+ - 'test/plugin/**'
+ - '**/pom.xml'
+ - '!**.md'
+
+concurrency:
+ group: plugins-jdk25-1-${{ github.event.pull_request.number || github.ref }}
+ cancel-in-progress: true
+
+jobs:
+ build:
+ name: Build
+ runs-on: ubuntu-latest
+ timeout-minutes: 30
+ steps:
+ - uses: actions/checkout@v2
+ with:
+ submodules: true
+ - name: Build local tomcat-curl image
+ run: |
+ docker build -t tomcat-curl:10.1.50-jdk25-temurin \
+ -f ./.github/workflows/Dockerfile-tomcat-jdk25-withCurl .
+ - name: Build
+ uses: ./.github/actions/build
+ with:
+ base_image_java: eclipse-temurin:25-jdk
+ base_image_tomcat: tomcat-curl:10.1.50-jdk25-temurin
+
+ test:
+ needs: [ build ]
+ name: ${{ matrix.case }}-jdk25
+ runs-on: ubuntu-latest
+ timeout-minutes: 90
+ strategy:
+ matrix:
+ case:
+ - spring-6.x-scenario
+ steps:
+ - uses: actions/checkout@v2
+ with:
+ submodules: true
+ - uses: actions/setup-java@v2
+ with:
+ distribution: 'temurin'
+ java-version: '25'
+ - name: Run Test
+ uses: ./.github/actions/run
+ with:
+ test_case: ${{ matrix.case }}
diff --git a/.github/workflows/publish-docker.yaml
b/.github/workflows/publish-docker.yaml
index 71597889a3..7c1f4726b5 100644
--- a/.github/workflows/publish-docker.yaml
+++ b/.github/workflows/publish-docker.yaml
@@ -64,7 +64,7 @@ jobs:
timeout-minutes: 60
strategy:
matrix:
- java-version: [ 8, 11, 17, 21 ]
+ java-version: [ 8, 11, 17, 21, 25 ]
env:
TAG: ${{ github.sha }}
steps:
diff --git a/CHANGES.md b/CHANGES.md
index 1abe98d2d0..ef7d4f8fba 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -24,6 +24,9 @@ Release Notes.
* Upgrade kafka-clients version in optional-reporter-plugins to 3.9.1.
* Fix AbstractLogger replaceParam when the replaced string contains a
replacement marker.
* Fix `JDBCPluginConfig.Plugin.JDBC.SQL_BODY_MAX_LENGTH` was not working in
some plugins.
+* Bump up Lombok to v1.18.42 to adopt JDK25 compiling.
+* Add `eclipse-temurin:25-jre` as another base image.
+* Add JDK25 plugin tests for Spring 6.
All issues and pull requests are
[here](https://github.com/apache/skywalking/milestone/242?closed=1)
diff --git a/Makefile b/Makefile
index b0b6adde5e..965c6572bc 100644
--- a/Makefile
+++ b/Makefile
@@ -34,7 +34,7 @@ dist: build
# Docker build
-base.all := alpine java8 java11 java17 java21
+base.all := alpine java8 java11 java17 java21 java25
base.each = $(word 1, $@)
base.image.alpine := alpine:3
@@ -42,6 +42,7 @@ base.image.java8 := eclipse-temurin:8-jre
base.image.java11 := eclipse-temurin:11-jre
base.image.java17 := eclipse-temurin:17-jre
base.image.java21 := eclipse-temurin:21-jre
+base.image.java25 := eclipse-temurin:25-jre
docker.%: PLATFORMS =
docker.%: LOAD_OR_PUSH = --load
diff --git a/docs/en/contribution/compiling.md
b/docs/en/contribution/compiling.md
index d1507cc47a..da69b48a91 100644
--- a/docs/en/contribution/compiling.md
+++ b/docs/en/contribution/compiling.md
@@ -1,7 +1,7 @@
# Compiling project
This document will help you compile and build a project in your maven and set
your IDE.
-Prepare JDK 17 or 21.
+Prepare JDK 17, 21 or 25.
* If you clone codes from https://github.com/apache/skywalking-java
```shell
diff --git a/docs/en/setup/service-agent/java-agent/Plugin-test.md
b/docs/en/setup/service-agent/java-agent/Plugin-test.md
index c91402e6c5..e9dabb7515 100644
--- a/docs/en/setup/service-agent/java-agent/Plugin-test.md
+++ b/docs/en/setup/service-agent/java-agent/Plugin-test.md
@@ -38,6 +38,10 @@ The test case project must be packaged as `project-name.war`
by using `mvn packa
Take the following test project as an example
*
[spring-4.3.x-scenario](../../../../../test/plugin/scenarios/spring-4.3.x-scenario)
+Note on `tomcat:10.1.50-jdk25-temurin` image:
+
+Starting from JDK 22, the Tomcat community removed `curl` from the official
Tomcat JDK images. Since `curl` is required by our plugin test framework, we
provide a custom `tomcat-jdk25` image built with `curl` installed.
+You can refer to the
[tomcat-jdk25-dockerFile](../../../../../.github/workflows/Dockerfile-tomcat-jdk25-withCurl)
to build the image for local plugin tests.
## Test project hierarchical structure
The test case is an independent maven project, and it must be packaged as a
war tar ball or zip file, depending on the chosen base image. Also, two
external accessible endpoints usually two URLs) are required.
@@ -682,6 +686,7 @@ You can run `python3 tools/select-group.py` to see which
file contains the least
If a test case required to run in JDK 17 environment, please add you test case
into file `plugins-jdk17-test.<n>.yaml`.
If a test case required to run in JDK 21 environment, please add you test case
into file `plugins-jdk21-test.<n>.yaml`.
+If a test case required to run in JDK 25 environment, please add you test case
into file `plugins-jdk25-test.<n>.yaml`.
```yaml
jobs:
diff --git a/docs/en/setup/service-agent/java-agent/README.md
b/docs/en/setup/service-agent/java-agent/README.md
index f6702c006f..d829b741fc 100755
--- a/docs/en/setup/service-agent/java-agent/README.md
+++ b/docs/en/setup/service-agent/java-agent/README.md
@@ -1,6 +1,6 @@
# Setup java agent
-1. Agent is available for JDK 8 - 21.
+1. Agent is available for JDK 8 - 25.
1. Find `agent` folder in SkyWalking release package
1. Set `agent.service_name` in `config/agent.config`. Could be any String in
English.
1. Set `collector.backend_service` in `config/agent.config`. Default point to
`127.0.0.1:11800`, only works for local
diff --git a/pom.xml b/pom.xml
index 77678e9b66..8e85a9cee4 100755
--- a/pom.xml
+++ b/pom.xml
@@ -86,7 +86,7 @@
<junit.version>4.12</junit.version>
<mockito-core.version>5.0.0</mockito-core.version>
<system-stubs-junit4.version>2.0.2</system-stubs-junit4.version>
- <lombok.version>1.18.30</lombok.version>
+ <lombok.version>1.18.42</lombok.version>
<!-- core lib dependency -->
<bytebuddy.version>1.17.6</bytebuddy.version>