This page is a collaborative entrypoint entry point for developer resources about developing and testing Jenkins to run on Java 11.
This page is not designed to receive status updates for user-facing issues. But you are more than welcome to check and report such issues so that they show on the dedicated Known Java 11 Compatibility issues wiki page.
|Table of Contents|
Run Jenkins using Java 11
Develop and test your plugin for running on Java 11
Use or update to As a part of JEP-211, we request all plugins to remain compatible with Java 8 for now. But you may still need to run the tests with Java 11 so that you can verify the plugin's behavior. It is possible to pass "jvm" and extra Java properties to Maven Surefire plugin to just run tests, but it is easier to actually build & test plugins with JDK 11. Jenkins development tools have been updated to support that:
- For non-experimental releases you should always build the plugins with java.level=8
- (changelog). Versions before 3.29 contain some updates to be able to build and
- test your plugins using JDK 11
- Plugins will be able to compile successfully with JDK 11 if and only if Jenkins Core version (jenkins.version) is above 2.138+
- You can update Jenkinsfile to run tests with Java 11.
Release a plugin specifically for Java 11
Current intermediate solution
First, please avoid doing this.
If you really think you have a case where you need it, we encourage you to come over the Jenkins developers mailing list to expose your case and see if we can find another way.
In any case, the strongly recommended way to handle this is:
- To workaround the Jenkins core requirement, a full configuration matrix may be used in buildPlugin():
Some potential pitfalls to remember about:
- The existing "mvn hpi:run" command will not work correctly on Java 11 unless Java modules are downloaded and passed to the environment (
Jira server Jenkins JIRA serverId dd058dce-0c66-3b77-8b09-71b1d7728747 key JENKINS-54807
- If you use Mockito/PowerMock in your plugin tests, you may need to update to the recent versions with Java 11 support
- In some cases FindBugs may crash in some cases (
), workarounds may be needed
Jira server Jenkins JIRA serverId dd058dce-0c66-3b77-8b09-71b1d7728747 key JENKINS-53692
See the "Known developer tools issues" for more known issues in Plugin POM and Jenkins plugins.
Make sure your plugin is tested in Continuous Integration on Java 8 and Java 11 at the same time
Since this addition, it is now recommended that you use the following configuration in your plugin:
By default, this will build your plugin:
- on the default configuration, extracted from your pom.xml
- on Jenkins 2.164.1 using a JDK 8
- on Jenkins 2.164.1 using a JDK 11
All this both on Windows and Linux.
Release an experimental plugin version specifically for Java 11
Although we request all plugins to remain compatible with Java 8, in some cases it may be reasonable to release an experimental version for Java 11 early adopters.
Long term solution
The and Jenkins Docker plugins.txt installer (e.g. "workflow-support:experimental") will default to this experimental update center. It allows Java 11 early adopters to get patches without requiring deploying snapshots manually:
In order to do an experimental release for Java 11, all the following steps must be performed:
- Develop the Java 11 code in a feature branch (e.g. "java11-support") so that it does not impact main release line
- Add an "alpha" or "beta" marker to the version of your experimental plugin
- Update to plugin-pom:3.29+ so your plugin embeds the new minimum version of Java requirement in its manifest
- Set the plugin.minimumJavaVersion property in your pom.xml to 11 (see https://github.com/jenkinsci/plugin-pom/blob/master/CHANGELOG.md#329)
If if you forget about any of the bullets above, the update may impact Java 8 users. The long-term solution is already on its way, but is not delivered yet. It's partly delivered by you bumping to the last 3.29+ parent pom so your plugin embeds a "minimum Java" metadata, plus adapting Jenkins core to use this metadata to filter out releases for a version of Java that is higher than the current runtime. Follow
WIP: Stay tuned: an article is planned to land on jenkins.io in the next hours/days .
Plugin Compat Tester (aka PCT) using Java 11
Documented in the PCT repository: https://github.com/jenkinsci/plugin-compat-tester#running-pct-with-custom-java-versions
Current status of many plugins (please comment there to get access, or send an email if you tested another opensource plugin).
Run Acceptance Test Harness (aka ATH) using Java 11
Documented on the ATH repository: https://github.com/jenkinsci/acceptance-test-harness/blob/master/docs/JAVA11.md
Jenkins Core known issues with Java 11
If you hit this issue
Known developer tools issues
Please add known issues here. The preferred way is to create or find the associated JIRA in the Jenkins Issue Tracker, and add the
"java11-devtools-compatibility". Then the issue it will automatically show up in the list below.
If you cannot create a JIRA issue, please still feel free to add notes about your findings below.
Jira server Jenkins JIRA columns type,key,components,summary,priority,status,released as maximumIssues 20 jqlQuery filter="Java 11 - DevTools compatibility issues" serverId dd058dce-0c66-3b77-8b09-71b1d7728747