diff --git a/.dependabot/config.yml b/.dependabot/config.yml
index 72265f5261..7987d3f32b 100644
--- a/.dependabot/config.yml
+++ b/.dependabot/config.yml
@@ -12,6 +12,10 @@ update_configs:
ignored_updates:
- match:
dependency_name: "org.jenkins-ci.main:jenkins-core"
+ - match:
+ dependency_name: "org.jenkins-ci.main:jenkins-war"
+ - match:
+ dependency_name: "org.jenkins-ci.main:jenkins-bom"
- match:
dependency_name: "slf4j-api"
- match:
diff --git a/CONTRIBUTING.adoc b/CONTRIBUTING.adoc
index 36ab93ba7c..f6c23bf8b3 100644
--- a/CONTRIBUTING.adoc
+++ b/CONTRIBUTING.adoc
@@ -13,7 +13,7 @@ For major changes we usually expect a reference implementation to be provided in
To run and build the repository with integration tests, you can execute
- mvn -Prun-plugin-pom-its clean verify
+ mvn clean verify
## Building and using snapshots
@@ -21,8 +21,8 @@ Snapshots might be needed to provide reference implementations for Plugin POM pa
If you are a plugin maintainer with account on Jenkins artifactory,
you can deploy a Plugin POM snapshot using this command:
- mvn clean deploy
-
+ mvn clean deploy
+
Once the snapshot is deployed, you will see a timestamped snapshot version in Maven console output.
Then you can just replace the Plugin POM version in your downstream PRs by this version so that you can demonstrate the build on ci.jenkins.io
@@ -31,7 +31,7 @@ Then you can just replace the Plugin POM version in your downstream PRs by this
### Managing release notes
* Changelog drafts are automatically by link:https://github.com/toolmantim/release-drafter[Release Drafter]
-* See the documentation about Jenkins Release Drafter configuration link:https://github.com/jenkinsci/.github/blob/master/docs/release-drafter.adoc[here]
+** See the documentation about Jenkins Release Drafter configuration link:https://github.com/jenkinsci/.github/blob/master/.github/release-drafter.adoc[here]
* When merging pull requests...
** Make sure to modify pull request titles to make them user-friendly
** Set proper labels so the changelog is categorized
diff --git a/Jenkinsfile b/Jenkinsfile
index d205b5663d..e58a9d988e 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -1,25 +1,11 @@
-pipeline {
- options {
- buildDiscarder(logRotator(numToKeepStr: '20'))
- timeout(time: 1, unit: 'HOURS')
- }
- agent {
- docker {
- image 'maven:3.6.0-jdk-8'
- label 'docker'
- }
- }
- stages {
- stage('main') {
- steps {
- sh 'mvn -B -Prun-plugin-pom-its clean verify'
- }
- post {
- failure {
- catchError { // JENKINS-42478: in case the failure occurred prior to getting the node
- archiveArtifacts artifacts: 'target/its/*/build.log', allowEmptyArchive: true
- }
- }
+properties([buildDiscarder(logRotator(numToKeepStr: '20'))])
+node('maven') {
+ checkout scm
+ timeout(time: 1, unit: 'HOURS') {
+ // TODO Azure mirror
+ ansiColor('xterm') {
+ withEnv(['MAVEN_OPTS=-Djansi.force=true']) {
+ sh 'mvn -B -Dstyle.color=always -ntp clean verify'
}
}
}
diff --git a/README.md b/README.md
index a72d32528e..05a3698047 100644
--- a/README.md
+++ b/README.md
@@ -1,10 +1,14 @@
-# plugin-pom
-Parent POM for Jenkins Plugins
+# Parent POM for Jenkins Plugins
+
+[![GitHub release](https://img.shields.io/github/release/jenkinsci/plugin-pom.svg?label=changelog)](https://github.com/jenkinsci/plugin-pom/releases/latest)
+[![GitHub license](https://img.shields.io/github/license/jenkinsci/plugin-pom)](https://github.com/jenkinsci/plugin-pom/blob/master/LICENSE)
## Introduction
This new parent POM is decoupled from the core Jenkins project, both from the Maven and repository perspectives.
+Since version 4.0 the plugin pom supports Jenkins 2.200 and higher and a select few older LTS lines ([full list](https://repo.jenkins-ci.org/releases/org/jenkins-ci/main/jenkins-bom/))
+
The main changes are:
* Reduced number of overridable properties. All references (e.g. dependencies and plugin versions) not
thought to be overridden are no longer based on properties. The main remaining overridable properties are:
@@ -13,12 +17,11 @@ thought to be overridden are no longer based on properties. The main remaining o
See [Java Support](#java-support) for more info.
* `jenkins-test-harness.version`: The [JTH version](https://github.com/jenkinsci/jenkins-test-harness/releases) used to test plugin.
Uses split test-harness (see [JENKINS-32478](https://issues.jenkins-ci.org/browse/JENKINS-32478)).
- If the required Jenkins version is 1.580.1 or higher, JTH 2.1+ is recommended.
* `hpi-plugin.version`: The HPI Maven Plugin version used by the plugin.
(Generally you should not set this to a version _lower_ than that specified in the parent POM.)
* `stapler-plugin.version`: The Stapler Maven plugin version required by the plugin.
* `java.level.test`: The Java version to use to build the plugin tests.
- * In order to make their versions the same as the used core version, `slf4jVersion`, `node.version` and `npm.version`
+ * In order to make their versions the same as the used core version, `node.version` and `npm.version`
properties are provided.
* Tests are skipped during the `perform` phase of a release (can be overridden by setting `release.skipTests` to false).
* Javadoc has been set to _quiet_ by default in 2.20+, which means it will only log errors and warnings.
@@ -58,27 +61,9 @@ If you had a `jar:test-jar` execution, delete it and add to `properties`:
The plugin POM is designed for plugin builds with JDK 8 or above,
but target `java.level` for a plugin may differ from a JDK version used for the build.
-Starting from Plugin POM `3.44`, support of Java 7 targets in Plugin POM is deprecated,
-`java.level=8` and `jenkins.version>2.59` are expected to be used for most plugins.
-
-### Using deprecated Java targets
-
-If recent plugin POM versions are required for a plugin with older baselines,
-a developer can use dependency version system properties to downgrade components incompatible with Java 7.
+Starting from Plugin POM `3.44`, support of Java 7 targets in Plugin POM is deprecated and has been removed in `4.0`,
+`java.level=8` and `jenkins.version>2.204.1` are expected to be used for most plugins.
-Example:
-
-```xml
-
- 2.32.3
- 7
-
- 1.17
-
-```
-
-Such mode is no longer tested in the repository,
-and the list of incompatible dependencies will expand without further notice in new releases.
## Incrementals
@@ -90,121 +75,25 @@ See [Incrementals](https://github.com/jenkinsci/incrementals-tools) for details.
To run JMH benchmarks from JUnit tests, you must run you must activate the `benchmark`
profile. For example:
```bash
-mvn -Dbenchmark test
+mvn -P jmh-benchmark test
```
-When the `benchmark` property is set, no tests apart from JMH benchmarks will be run.
+When the `jmh-benchmark` profile is enabled, no tests apart from JMH benchmarks will be run.
The names of the classes containing the benchmark runners should either begin with or
-end with the the word `Benchmark`. For example, `FooBenchmark` and `BenchmarkFoo` will
+end with the word `Benchmark`. For example, `FooBenchmark` and `BenchmarkFoo` will
be detected when using `-Dbenchmark`, however, `FooBar` will be ignored.
See also: [documentation for JMH benchmarks](https://github.com/jenkinsci/jenkins-test-harness/blob/master/docs/jmh-benchmarks.adoc)
-## Baselines
-
-It is handy to be able to select different Jenkins baselines with a Maven profile.
-To set this up, you must edit your `~/.m2/settings.xml` to include some new entries in the `` section.
-For example:
-
-```xml
-
- jenkins-289
-
- 2.89.2
-
-
-
- jenkins-273
-
- 2.73.3
-
-
-
- jenkins-260
-
- 2.60.3
-
-
-
- jenkins-246
-
- 2.46.3
-
-
-
- jenkins-232
-
- 2.32.3
-
-
-
- jenkins-219
-
- 2.19.4
-
-
-
- jenkins-27
-
- 2.7.3
-
-
-
- jenkins-651
-
- 1.651.3
-
-
-
- jenkins-642
-
- 1.642.4
-
-
-
- jenkins-625
-
- 1.625.3
-
-
-
- jenkins-609
-
- 1.609.3
-
-
-
- jenkins-596
-
- 1.596.3
-
-
-
- jenkins-580
-
- 1.580.3
-
-
-
- jenkins-565
-
- 1.565.3
- 1.565.3
-
-
-```
-
-Now for example if your plugin normally builds against 1.625.x, but you wish to test compatibility with 1.651.x,
-there is no need to edit your POM. Just run:
-
- mvn -Pjenkins-651 clean test
-
-or
-
- mvn -Pjenkins-651 hpi:run
-
## Setup Wizard
By default, the setup wizard (Jenkins >= 2.0) is skipped when using `hpi:run`. If you want the wizard to be enabled just run:
mvn -Dhudson.Main.development=false hpi:run
+## Jenkins Core BOM
+
+Since version 2.195, Jenkins provides a [Maven Bill Of Materials (BOM)](https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Importing_Dependencies)
+that centrally defines versions of various libraries used by Jenkins Core and should make it easier to update to newer Jenkins Core versions
+
+For more information, see the [Dependency Management](https://jenkins.io/doc/developer/plugin-development/dependency-management/) section of the
+[plugin development guide](https://jenkins.io/doc/developer/plugin-development/).
diff --git a/pom.xml b/pom.xml
index f090ab8fa8..f8c34e21d3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -28,7 +28,7 @@
org.jenkins-ci.plugins
plugin
- 3.48-SNAPSHOT
+ 4.2-SNAPSHOT
pom
Jenkins Plugin Parent POM
@@ -38,6 +38,7 @@
scm:git:ssh://git@github.com/jenkinsci/plugin-pom.git
scm:git:ssh://git@github.com/jenkinsci/plugin-pom.git
+ https://github.com/jenkinsci/plugin-pom
HEAD
@@ -47,56 +48,50 @@
UTF-8
- -Xmx768M -Djava.awt.headless=true
- 2.138.4
- 2.52
- 3.6
+ -Xms768M -Xmx768M -Djava.awt.headless=true -XX:+HeapDumpOnOutOfMemoryError -XX:+TieredCompilation -XX:TieredStopAtLevel=1
+
+ 2.204
+ ${jenkins.version}
+
+ 2.64
+
+ 3.14
1.17
you-must-override-the-java.level-property
- 1.${java.level}
${java.level}
- 1
- ${concurrency}
- false
-
- true
- Medium
- default
-
-
- ${findbugs.failOnError}
+
- ${findbugs.threshold}
+ Medium
- ${findbugs.effort}
+ Default
true
true
- 1.7.25
4.0.0
2.13.1
0.23.0
- 1.7.6
+ 1.10.0
-
- git
- 1.11.2
+
true
+
1.16
${access-modifier.version}
${access-modifier.version}
- 1.17
+ 1.18
+ 2.0.7
+
false
https://repo.jenkins-ci.org/incrementals/
@@ -107,16 +102,12 @@
-
-
- com.github.spotbugs
- spotbugs-annotations
- 3.1.12
-
- net.jcip
- jcip-annotations
- 1.0
+ org.jenkins-ci.main
+ jenkins-bom
+ ${jenkins-bom.version}
+ pom
+ import
org.jenkins-ci.main
@@ -143,8 +134,9 @@
junit
junit
- 4.12
+ 4.13
+
javax.servlet
javax.servlet-api
@@ -155,71 +147,57 @@
animal-sniffer-annotations
${animal.sniffer.version}
-
- org.codehaus.mojo.signature
- java15
- 1.0
- signature
-
-
- org.codehaus.mojo.signature
- java16
- 1.1
- signature
-
-
- org.codehaus.mojo.signature
- java17
- 1.0
- signature
-
org.codehaus.mojo.signature
java18
1.0
signature
-
-
- commons-logging
- commons-logging
- 1.2
- provided
-
-
- log4j
- log4j
- 1.2.17
- provided
-
-
-
org.mockito
mockito-core
- 2.28.2
+ 3.3.3
org.powermock
powermock-module-junit4
- 2.0.2
+ ${powermock.version}
org.powermock
powermock-api-mockito2
- 2.0.2
+ ${powermock.version}
org.objenesis
objenesis
- 3.0.1
+ 3.1
+
+
+
+ org.jenkins-ci.main
+ jenkins-core
+ provided
+
+
+
+ org.jenkins-ci.main
+ jenkins-war
+ executable-war
+ test
+
+
+
+
+ javax.servlet
+ javax.servlet-api
+ provided
+
+
com.github.spotbugs
@@ -233,6 +211,7 @@
provided
true
+
org.codehaus.mojo
@@ -240,34 +219,30 @@
provided
true
-
- javax.servlet
- javax.servlet-api
+
+
+ commons-logging
+ commons-logging
provided
- org.jenkins-ci.main
- jenkins-core
+ org.kohsuke
+ access-modifier-annotation
provided
+
+
+
+ org.jenkins-ci
+ annotation-indexer
+
+
-
-
- org.jenkins-ci.main
- jenkins-war
- executable-war
- test
-
+
org.jenkins-ci.main
jenkins-test-harness
test
-
-
- junit
- junit-dep
-
-
org.jenkins-ci
@@ -279,51 +254,8 @@
junit
test
-
- org.slf4j
- slf4j-api
- ${slf4jVersion}
- compile
-
- true
-
-
-
- org.slf4j
- log4j-over-slf4j
- ${slf4jVersion}
- test
-
-
- org.slf4j
- jcl-over-slf4j
- ${slf4jVersion}
- test
-
-
- org.slf4j
- slf4j-jdk14
- ${slf4jVersion}
- test
-
-
- org.kohsuke
- access-modifier-annotation
- ${access-modifier-annotation.version}
- provided
-
-
- org.jenkins-ci
- annotation-indexer
-
-
-
-
- commons-logging
- commons-logging
- provided
-
+
+ 3.0.0-M3
maven-install-plugin
@@ -374,12 +310,12 @@
maven-javadoc-plugin
- 3.1.0
+ 3.2.0
true
- http://javadoc.jenkins.io/
+ https://javadoc.jenkins.io/
@@ -389,7 +325,7 @@
maven-site-plugin
- 3.7.1
+ 3.9.0
maven-project-info-reports-plugin
@@ -397,12 +333,7 @@
maven-source-plugin
- 3.1.0
-
-
- InjectedTest.java
-
-
+ 3.2.1
maven-war-plugin
@@ -424,14 +355,14 @@
- org.codehaus.gmaven
- gmaven-plugin
- 1.5-jenkins-3
+ org.codehaus.gmavenplus
+ gmavenplus-plugin
+ 1.9.0
org.codehaus.mojo
build-helper-maven-plugin
- 3.0.0
+ 3.1.0
add-source
@@ -450,12 +381,7 @@
org.jacoco
jacoco-maven-plugin
- 0.8.4
-
-
- org.kohsuke.gmaven
- gmaven-plugin
- 1.0-rc-5-patch-2
+ 0.8.5
org.kohsuke.stapler
@@ -490,7 +416,7 @@
io.jenkins.tools.incrementals
incrementals-maven-plugin
- 1.0-beta-7
+ 1.1
org.jenkins-ci.*
@@ -500,6 +426,11 @@
false
+
+ com.github.spotbugs
+ spotbugs-maven-plugin
+ 4.0.0
+
@@ -609,6 +540,27 @@
+
+ no-snapshots-in-release
+ validate
+
+ enforce
+
+
+
+
+
+ No SNAPSHOT versions are allowed for releases
+ true
+
+ false
+
+
+
+
@@ -621,7 +573,6 @@
com.github.spotbugs
spotbugs-maven-plugin
- 3.1.12
${spotbugs.failOnError}
@@ -661,6 +612,7 @@
check
check
+ test
@@ -682,7 +634,7 @@
/jenkins
- ${plugin.minimumJavaVersion}
+ 1.${java.level}
${hudson.Main.development}
@@ -733,24 +685,23 @@
- org.codehaus.gmaven
- gmaven-plugin
+ org.codehaus.gmavenplus
+ gmavenplus-plugin
test-in-groovy
+ addTestSources
generateTestStubs
- testCompile
+ compileTests
-
-
- ant
- ant
- 1.6.5
-
-
+
+
+ ${project.build.directory}/generated-test-sources/groovy-stubs
+
+
maven-antrun-plugin
@@ -759,9 +710,9 @@
createTempDir
generate-test-resources
-
+
-
+
run
@@ -772,6 +723,26 @@
maven-surefire-plugin
+
+ false
+
+
+ hudson.udp
+ -1
+
+
+ java.io.tmpdir
+ ${surefireTempDir}
+
+
+ alphabetical
+
+
+
+ maven-failsafe-plugin
+
+
+ false
hudson.udp
@@ -828,6 +799,52 @@
+
+
+
+ org.codehaus.mojo
+ mrm-maven-plugin
+ 1.2.0
+ false
+
+
+
+ start
+ stop
+
+
+ repository.proxy.url
+
+
+
+
+
+
+
+
+ maven-invoker-plugin
+ 3.2.1
+ false
+
+
+ integration-test
+
+ install
+ run
+
+
+ true
+ true
+ ${project.build.directory}/its
+ ${basedir}/target/local-repo
+ src/it/settings.xml
+
+ ${repository.proxy.url}
+
+
+
+
+
@@ -869,42 +886,12 @@
8
-
- deprecated-java.level-7
-
-
- java.level
- 7
-
-
-
-
-
- maven-antrun-plugin
-
-
- initialize
- warn-deprecated-java.level
-
- run
-
-
-
- WARNING: Plugin POM defines java.level=${java.level} which is deprecated in the current Plugin POM version. See https://github.com/jenkinsci/plugin-pom/blob/master/README.md#java-support
-
-
-
-
-
-
-
-
jenkins-release
${release.skipTests}
- ${release.skipTests}
${release.skipTests}
+ ${release.skipTests}
@@ -980,11 +967,11 @@
- org.codehaus.gmaven
- gmaven-plugin
+ org.codehaus.gmavenplus
+ gmavenplus-plugin
[1.0,)
- testCompile
+ compileTests
generateTestStubs
@@ -1006,29 +993,6 @@
always
-
- rerunFailingTests
-
-
- !test
-
-
-
- 4
-
-
-
- skip-spotbugs-with-tests
-
-
- skipTests
- true
-
-
-
- true
-
-
skip-node-tests
@@ -1103,7 +1067,6 @@
report
- prepare-package
report
@@ -1293,50 +1256,6 @@
-
- jgit-scm-provider
-
-
- git.provider
- jgit
-
-
-
-
-
- maven-release-plugin
-
-
- ${git.provider}
-
-
-
-
- org.apache.maven.scm
- maven-scm-provider-jgit
- ${maven-scm.version}
-
-
-
-
- maven-scm-plugin
- ${maven-scm.version}
-
-
- ${git.provider}
-
-
-
-
- org.apache.maven.scm
- maven-scm-provider-jgit
- ${maven-scm.version}
-
-
-
-
-
-
consume-incrementals
@@ -1366,7 +1285,7 @@
org.codehaus.mojo
flatten-maven-plugin
- 1.1.0
+ 1.2.2
true
@@ -1407,7 +1326,7 @@
io.jenkins.tools.incrementals
incrementals-enforcer-rules
- 1.0-beta-7
+ 1.1
@@ -1471,63 +1390,9 @@
-
- run-plugin-pom-its
-
-
-
- org.codehaus.mojo
- mrm-maven-plugin
- 1.2.0
-
-
-
- start
- stop
-
-
- repository.proxy.url
-
-
-
-
-
-
-
-
- maven-invoker-plugin
- 3.2.0
-
-
- integration-test
-
- install
- run
-
-
- false
- true
- ${project.build.directory}/its
- ${basedir}/target/local-repo
- src/it/settings.xml
-
- ${repository.proxy.url}
-
-
-
-
-
-
-
-
jmh-benchmark
-
-
- benchmark
-
-
@@ -1543,5 +1408,19 @@
+
+
+
+ quick-build
+
+
+ true
+ true
+ true
+ true
+ true
+ true
+
+
diff --git a/src/it/benchmark/invoker.properties b/src/it/benchmark/invoker.properties
index 85dbb8329f..06c07a105c 100644
--- a/src/it/benchmark/invoker.properties
+++ b/src/it/benchmark/invoker.properties
@@ -1 +1 @@
-invoker.goals=-Dbenchmark clean test
+invoker.goals=-P jmh-benchmark -Dstyle.color=always -ntp clean test
diff --git a/src/it/benchmark/pom.xml b/src/it/benchmark/pom.xml
index e56be8c582..84a3b22fb6 100644
--- a/src/it/benchmark/pom.xml
+++ b/src/it/benchmark/pom.xml
@@ -13,7 +13,7 @@
1.0-SNAPSHOT
jar
- 2.60.3
+ 2.204
8
diff --git a/src/it/beta-fail/invoker.properties b/src/it/beta-fail/invoker.properties
index d7458cf72a..2c033519e7 100644
--- a/src/it/beta-fail/invoker.properties
+++ b/src/it/beta-fail/invoker.properties
@@ -1,2 +1,2 @@
-invoker.goals=clean install
+invoker.goals=-Dstyle.color=always -ntp clean install
invoker.buildResult=failure
diff --git a/src/it/beta-fail/pom.xml b/src/it/beta-fail/pom.xml
index d8e8fb8064..153ab36869 100644
--- a/src/it/beta-fail/pom.xml
+++ b/src/it/beta-fail/pom.xml
@@ -13,7 +13,7 @@
1.0-SNAPSHOT
pom
- 2.60.3
+ 2.204
8
true
diff --git a/src/it/beta-fail/postbuild.groovy b/src/it/beta-fail/postbuild.groovy
index 1854c1268d..66b0092688 100644
--- a/src/it/beta-fail/postbuild.groovy
+++ b/src/it/beta-fail/postbuild.groovy
@@ -1,3 +1,3 @@
-assert new File(basedir, 'build.log').text.contains('[ERROR] downstream/Caller:5 upstream/Api.experimental()V is still in beta')
+assert new File(basedir, 'build.log').text.replaceAll(/\e\[[\d;]*[^\d;]/, '').contains('[ERROR] downstream/Caller:5 upstream/Api.experimental()V is still in beta')
return true
diff --git a/src/it/beta-just-testing/invoker.properties b/src/it/beta-just-testing/invoker.properties
index 4b89532743..de21ce6dfe 100644
--- a/src/it/beta-just-testing/invoker.properties
+++ b/src/it/beta-just-testing/invoker.properties
@@ -1 +1 @@
-invoker.goals=clean install
+invoker.goals=-Dstyle.color=always -ntp clean install
diff --git a/src/it/beta-just-testing/pom.xml b/src/it/beta-just-testing/pom.xml
index 64d3d093d2..29d795760c 100644
--- a/src/it/beta-just-testing/pom.xml
+++ b/src/it/beta-just-testing/pom.xml
@@ -13,8 +13,8 @@
1.0-SNAPSHOT
pom
- 2.7.3
- 7
+ 2.204
+ 8
true
diff --git a/src/it/beta-pass/invoker.properties b/src/it/beta-pass/invoker.properties
index 4b89532743..de21ce6dfe 100644
--- a/src/it/beta-pass/invoker.properties
+++ b/src/it/beta-pass/invoker.properties
@@ -1 +1 @@
-invoker.goals=clean install
+invoker.goals=-Dstyle.color=always -ntp clean install
diff --git a/src/it/beta-pass/pom.xml b/src/it/beta-pass/pom.xml
index 53453574bd..9a32cd10b0 100644
--- a/src/it/beta-pass/pom.xml
+++ b/src/it/beta-pass/pom.xml
@@ -13,7 +13,7 @@
1.0-SNAPSHOT
pom
- 2.107.1
+ 2.204
8
true
diff --git a/src/it/incrementals-and-plugin-bom/.mvn/extensions.xml b/src/it/incrementals-and-plugin-bom/.mvn/extensions.xml
new file mode 100644
index 0000000000..40d8e14027
--- /dev/null
+++ b/src/it/incrementals-and-plugin-bom/.mvn/extensions.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/src/it/incrementals-and-plugin-bom/.mvn/maven.config b/src/it/incrementals-and-plugin-bom/.mvn/maven.config
new file mode 100644
index 0000000000..2a0299c486
--- /dev/null
+++ b/src/it/incrementals-and-plugin-bom/.mvn/maven.config
@@ -0,0 +1,2 @@
+-Pconsume-incrementals
+-Pmight-produce-incrementals
diff --git a/src/it/incrementals-and-plugin-bom/invoker.properties b/src/it/incrementals-and-plugin-bom/invoker.properties
new file mode 100644
index 0000000000..c7b8c3b82f
--- /dev/null
+++ b/src/it/incrementals-and-plugin-bom/invoker.properties
@@ -0,0 +1,3 @@
+invoker.goals.1=-Dstyle.color=always -ntp clean install
+# real extension will not work here due to its not being at the root of a repository, so fake it:
+invoker.goals.2=-Dstyle.color=always -ntp -Dset.changelist -Dchangelist=-rc1234.deadbeef5678 clean install
diff --git a/src/it/incrementals-and-plugin-bom/pom.xml b/src/it/incrementals-and-plugin-bom/pom.xml
new file mode 100644
index 0000000000..70a3694cdf
--- /dev/null
+++ b/src/it/incrementals-and-plugin-bom/pom.xml
@@ -0,0 +1,50 @@
+
+
+ 4.0.0
+
+ org.jenkins-ci.plugins
+ plugin
+ @project.version@
+
+
+ io.jenkins.plugins
+ incrementals-and-plugin-bom
+ ${revision}${changelist}
+ hpi
+
+ 1.0
+ -SNAPSHOT
+ 2.204
+ 8
+
+
+
+
+ repo.jenkins-ci.org
+ https://repo.jenkins-ci.org/public/
+
+
+
+
+ repo.jenkins-ci.org
+ https://repo.jenkins-ci.org/public/
+
+
+
+
+
+ io.jenkins.tools.bom
+ bom-2.176.x
+ 4
+ import
+ pom
+
+
+
+
+
+ org.jenkins-ci.plugins.workflow
+ workflow-step-api
+
+
+
diff --git a/src/it/incrementals-and-plugin-bom/postbuild.groovy b/src/it/incrementals-and-plugin-bom/postbuild.groovy
new file mode 100644
index 0000000000..d213f568db
--- /dev/null
+++ b/src/it/incrementals-and-plugin-bom/postbuild.groovy
@@ -0,0 +1,3 @@
+assert new File(basedir, '../../local-repo/io/jenkins/plugins/incrementals-and-plugin-bom/1.0-SNAPSHOT/incrementals-and-plugin-bom-1.0-SNAPSHOT.hpi').file
+assert new File(basedir, '../../local-repo/io/jenkins/plugins/incrementals-and-plugin-bom/1.0-rc1234.deadbeef5678/incrementals-and-plugin-bom-1.0-rc1234.deadbeef5678.hpi').file
+return true
diff --git a/src/it/incrementals-and-plugin-bom/src/main/java/io/jenkins/plugins/RandomClass.java b/src/it/incrementals-and-plugin-bom/src/main/java/io/jenkins/plugins/RandomClass.java
new file mode 100644
index 0000000000..cc83b7d60a
--- /dev/null
+++ b/src/it/incrementals-and-plugin-bom/src/main/java/io/jenkins/plugins/RandomClass.java
@@ -0,0 +1,6 @@
+package io.jenkins.plugins;
+public class RandomClass {
+ public RandomClass() {
+ org.jenkinsci.plugins.workflow.steps.StepContext x = null;
+ }
+}
diff --git a/src/it/incrementals-and-plugin-bom/src/main/resources/index.jelly b/src/it/incrementals-and-plugin-bom/src/main/resources/index.jelly
new file mode 100644
index 0000000000..bee66c6798
--- /dev/null
+++ b/src/it/incrementals-and-plugin-bom/src/main/resources/index.jelly
@@ -0,0 +1,4 @@
+
+
+ etc.
+
diff --git a/src/it/incrementals-and-plugin-bom/src/test/java/io/jenkins/plugins/RandomClassTest.java b/src/it/incrementals-and-plugin-bom/src/test/java/io/jenkins/plugins/RandomClassTest.java
new file mode 100644
index 0000000000..c2a1bdb915
--- /dev/null
+++ b/src/it/incrementals-and-plugin-bom/src/test/java/io/jenkins/plugins/RandomClassTest.java
@@ -0,0 +1,5 @@
+package io.jenkins.plugins;
+import org.junit.Test;
+public class RandomClassTest {
+ @Test public void whatever() {}
+}
diff --git a/src/it/sample-plugin/invoker.properties b/src/it/sample-plugin/invoker.properties
index ea319c9355..ccb70fca53 100644
--- a/src/it/sample-plugin/invoker.properties
+++ b/src/it/sample-plugin/invoker.properties
@@ -1,3 +1,3 @@
# install, not verify, because we want to check the artifact as we would be about to deploy it
# release.skipTests normally set in jenkins-release profile since release:perform would do the tests
-invoker.goals=-Pjenkins-release -Drelease.skipTests=false clean install
+invoker.goals=-Dstyle.color=always -ntp -Pjenkins-release -Drelease.skipTests=false clean install
diff --git a/src/it/sample-plugin/pom.xml b/src/it/sample-plugin/pom.xml
index a93ae2429b..2eb60ee04d 100644
--- a/src/it/sample-plugin/pom.xml
+++ b/src/it/sample-plugin/pom.xml
@@ -13,7 +13,7 @@
1.0-SNAPSHOT
hpi
- 2.60.3
+ 2.204
8
diff --git a/src/it/undefined-java-level/invoker.properties b/src/it/undefined-java-level/invoker.properties
index d7458cf72a..2c033519e7 100644
--- a/src/it/undefined-java-level/invoker.properties
+++ b/src/it/undefined-java-level/invoker.properties
@@ -1,2 +1,2 @@
-invoker.goals=clean install
+invoker.goals=-Dstyle.color=always -ntp clean install
invoker.buildResult=failure
diff --git a/src/it/undefined-java-level/pom.xml b/src/it/undefined-java-level/pom.xml
index 38736d5245..067bc56328 100644
--- a/src/it/undefined-java-level/pom.xml
+++ b/src/it/undefined-java-level/pom.xml
@@ -13,7 +13,7 @@
1.0-SNAPSHOT
hpi
- 2.32.3
+ 2.204
diff --git a/src/it/undefined-java-level/postbuild.groovy b/src/it/undefined-java-level/postbuild.groovy
index 3d84add3c2..68c1448db5 100644
--- a/src/it/undefined-java-level/postbuild.groovy
+++ b/src/it/undefined-java-level/postbuild.groovy
@@ -1,3 +1,3 @@
-assert new File(basedir, 'build.log').text.contains('java.lang.IllegalArgumentException: Unknown JDK version given. Should be something like "1.7"')
+assert new File(basedir, 'build.log').text.replaceAll(/\e\[[\d;]*[^\d;]/, '').contains('java.lang.IllegalArgumentException: Unknown JDK version given. Should be something like "1.7"')
return true