Thanks for the replies! I have been proceeding along the second path as we discussed. I saw an interesting problem in nodelabelparameter-plugin:
Require upper bound dependencies error for javax.annotation:javax.annotation-api:1.2 [provided] paths to dependency are: +-org.jenkins-ci.plugins:nodelabelparameter:1.10.3-SNAPSHOT +-org.jenkins-ci.main:jenkins-core:2.289.1 [provided] +-org.kohsuke.stapler:stapler:1.263 [provided] (managed) <-- org.kohsuke.stapler:stapler:1.263 [provided] +-javax.annotation:javax.annotation-api:1.2 [provided] and +-org.jenkins-ci.plugins:nodelabelparameter:1.10.3-SNAPSHOT +-org.jenkins-ci.plugins:parameterized-trigger:2.36 +-org.jenkins-ci.plugins:matrix-project:1.19 (managed) <-- org.jenkins-ci.plugins:matrix-project:1.6 +-org.jenkins-ci.plugins:junit:1.53 (managed) <-- org.jenkins-ci.plugins:junit:1.47 +-io.jenkins.plugins:plugin-util-api:2.5.1 (managed) <-- io.jenkins.plugins:plugin-util-api:2.4.0 +-javax.annotation:javax.annotation-api:1.3.2 [provided] and +-org.jenkins-ci.plugins:nodelabelparameter:1.10.3-SNAPSHOT +-org.jenkins-ci.plugins:parameterized-trigger:2.36 +-org.jenkins-ci.plugins:matrix-project:1.19 (managed) <-- org.jenkins-ci.plugins:matrix-project:1.6 +-org.jenkins-ci.plugins:junit:1.53 (managed) <-- org.jenkins-ci.plugins:junit:1.47 +-io.jenkins.plugins:plugin-util-api:2.5.1 (managed) <-- io.jenkins.plugins:plugin-util-api:2.4.0 +-edu.hm.hafner:codingstyle:2.10.0 [provided] +-javax.annotation:javax.annotation-api:1.3.2 [provided] Now core _does_ ship javax.annotation-api-1.3.2.jar in the WAR (transitively via Stapler) but does not declare it in the core BOM. plugin-util-api depends on it with scope=provided (good, because core does indeed provide it) but with an explicit version (bad, because the version plugin-util-api compiles against could be newer than the version shipped by plugin-util-api's core baseline). To resolve this I propose we explicitly add javax.annotation-api to the core BOM and plugin POM as we already do for spotbugs-annotations, jcip-annotations, and access-modifier-annotation. Then plugin-util-api can drop its version, instead getting the version corresponding to its core baseline via the core BOM provided by the plugin POM. Does that seem reasonable? A similar question applies to symbol-annotation. Now that we're recommending that plugins get this from core rather than from structs, it seems to me that we should give it the same treatment. -- You received this message because you are subscribed to the Google Groups "Jenkins Developers" group. To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-dev+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-dev/CAFwNDjo6nw0QO3i1cOPCeQgtUEm%3DK_Zm2CUaY0V3i2KGorncCw%40mail.gmail.com.