plugin-pom
Parent POM for Jenkins Plugins
Jenkins plugin parent POM gives every plugin a shared build setup
A Maven parent project supplies common build configuration for Jenkins plugins and decouples them from the core codebase.
What the parent POM does
The plugin parent POM is the shared build configuration for Jenkins plugins. The README states that it is decoupled from the core Jenkins project, both from a Maven perspective and a repository perspective, and that it provides a common build configuration for all Jenkins plugins. In Maven terms, a parent POM is a project that other projects inherit from, so plugin authors do not repeat the same build rules in every repository. By centralising the setup, the parent keeps plugin builds consistent and easier to maintain. The project is licensed under MIT and the primary language is Java. The README links to the Jenkins developer tutorial as the broader context. For a plugin maintainer, using this parent means compile, test, and packaging behaviour comes from one place rather than being copied across many repos. The decoupling from core also means the plugin build does not depend on the Jenkins source tree, which simplifies independent plugin development and release. The README's emphasis on decoupling is practical: a plugin team can build and test without checking out Jenkins itself, which shortens the feedback loop during development. The information above is drawn from the project README and its repository metadata, which remain the source for the project's current behaviour. Plugins set the parent groupId org.jenkins-ci.plugins and artifactId plugin, with jenkins.version as the mandatory property. A reader who wants exact commands or file names should open the repository and read the documentation the maintainers provide.
Version and tool requirements
The README lists version requirements that rise over time. Since version 5.0, the plugin parent POM requires Jenkins 2.479 or newer and JDK 17 or newer. Since version 4.52, it requires Jenkins 2.361 or newer and JDK 11 or newer. Since version 4.40, it supports Java 17. These thresholds tell a plugin author which baseline to expect when they pick a parent version. The README presents them as a short history of minimums, so an old plugin may need a lower JDK while a current one needs JDK 17. The Jenkins version requirement matters because the plugin must run on a compatible server. By documenting the jumps, the README helps maintainers plan upgrades of their own build. The numbers are stated plainly as version boundaries rather than advice, leaving the choice of parent version to the plugin's own pom. The stepped history also shows that the project tracks Java's own release line, moving from JDK 11 support up to JDK 17 as the baseline. That alignment keeps plugins on supported runtimes. The information above is drawn from the project README and its repository metadata, which remain the source for the project's current behaviour. Plugins set the parent groupId org.jenkins-ci.plugins and artifactId plugin, with jenkins.version as the mandatory property. A reader who wants exact commands or file names should open the repository and read the documentation the maintainers provide.
Pointing a plugin at the parent
To use the parent POM, the README says to change the parent of your plugin. The XML block sets groupId to org.jenkins-ci.plugins, artifactId to plugin, and version to the release you choose, with an empty relativePath element. The README points to the releases page for available versions. After setting the parent, you override needed properties, for example jenkins.version set to 2.361.4, which the README shows as a properties entry. If your plugin has a jar test jar execution, the README says to delete it and instead add no-test-jar set to false in properties. These steps are the standard way to adopt the shared build. The README frames them as edits to the plugin's own pom file, so the parent does the heavy lifting while the plugin keeps control of its version and baseline. The empty relativePath tells Maven to resolve the parent from the repository rather than a local path. A maintainer who follows these steps gets consistent test and packaging behaviour without writing it from scratch. The information above is drawn from the project README and its repository metadata, which remain the source for the project's current behaviour. Plugins set the parent groupId org.jenkins-ci.plugins and artifactId plugin, with jenkins.version as the mandatory property. A reader who wants exact commands or file names should open the repository and read the documentation the maintainers provide.
Properties you can override
The README describes overridable properties. The key one is jenkins.version, which is the Jenkins version required by the plugin and is marked mandatory. Specifying jenkins.version lets a plugin be tested against different core versions, which simplifies checking compatibility. The README says being able to set this property makes testing with various core versions easier. Other overridable properties are listed in the README, though the visible text cuts off after the first one. The pattern is that the parent sets sensible defaults and the plugin overrides only what it needs. This design keeps most plugins' poms short while still allowing fine control. The README's section on overridable properties is the place a maintainer looks when the default behaviour does not fit, since it documents which knobs are safe to turn. The mandatory jenkins.version is the one value every plugin must supply explicitly. By making most settings optional and only jenkins.version required, the parent keeps the barrier to adoption low. A new plugin can start with a tiny pom and grow its overrides as needed. The information above is drawn from the project README and its repository metadata, which remain the source for the project's current behaviour. Plugins set the parent groupId org.jenkins-ci.plugins and artifactId plugin, with jenkins.version as the mandatory property. A reader who wants exact commands or file names should open the repository and read the documentation the maintainers provide.
Editorial conclusion
The plugin parent POM is licensed under MIT, written in Java, and requires Jenkins 2.479 or newer and JDK 17 or newer since version 5.0.
Community notes