Thank you for your help. I figured it out using the tiles-maven-plugin. After fighting through the documentation I put together a simple tile and pulled it into my pom.
To clarify what the docs are saying: 1. The tile will be called tile.xml, will be installed in your maven repository along with a pom.xml that has uses the tiles-maven-plugin. 2. The project pom also uses the tiles-maven-plugin but it has the configuration element to reference your tile. Here is a concrete example of a tile for the jacoco plugin and then inject the tile into your project pom. tile.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <build> <plugins> <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.7.9</version> <executions> <execution> <id>default-prepare-agent</id> <goals> <goal>prepare-agent</goal> </goals> </execution> <execution> <id>default-report</id> <phase>prepare-package</phase> <goals> <goal>report</goal> </goals> </execution> <execution> <id>default-check</id> <goals> <goal>check</goal> </goals> <configuration> <rules> <!-- implementation is needed only for Maven 2 --> <rule implementation="org.jacoco.maven.RuleConfiguration"> <element>BUNDLE</element> <limits> <!-- implementation is needed only for Maven 2 --> <limit implementation="org.jacoco.report.check.Limit"> <counter>COMPLEXITY</counter> <value>COVEREDRATIO</value> <minimum>0.0</minimum> </limit> </limits> </rule> </rules> </configuration> </execution> </executions> </plugin> </plugins> </build> </project> pom.xml that accompanies the tile.xml in your maven repository <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>edu.school</groupId> <artifactId>cdp_build_tile</artifactId> <version>1.0-SNAPSHOT</version> <packaging>tile</packaging> <distributionManagement> <snapshotRepository> <id>snapshots</id> <name>Nexus Repository</name> <layout>default</layout> <url> http://server.school.edu:8081/nexus/content/repositories/snapshots</url> </snapshotRepository> </distributionManagement> <repositories> <repository> <id>nexus</id> <name>Nexus Repository</name> <layout>default</layout> <url>http://server.school.edu:8081/nexus</url> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> <build> <plugins> <plugin> <groupId>io.repaint.maven</groupId> <artifactId>tiles-maven-plugin</artifactId> <version>2.10</version> <extensions>true</extensions> </plugin> </plugins> </build> </project> build section of your project's pom <build> <plugins> <plugin> <groupId>io.repaint.maven</groupId> <artifactId>tiles-maven-plugin</artifactId> <version>2.10</version> <extensions>true</extensions> <configuration> <filtering>false</filtering> <tiles> <tile>edu.school:cdp_build_tile:1.0-SNAPSHOT</tile> </tiles> </configuration> </plugin> </plugins> </build> On Tue, May 30, 2017 at 1:25 PM, Karl Heinz Marbaise <khmarba...@gmx.de> wrote: > Hi, > > On 30/05/17 16:44, George Kopf wrote: > >> I apologize if this topic has already been discussed. I searched all over >> the web and the archives and didn't find anything, but I can't believe >> that >> I'm the only person with this request. >> > > No need to apologize for asking... > > >> I'm running the CI/CD pipeline for several java projects. >> >> We're using Git, Maven, Jenkins, Sonar, and Nexus. >> >> I would like to to have the developers create and own their own POM.XML >> that will be used for Snapshots and Release Candidates. >> > > and in consequence also for releases ? > > >> I want to add my build specific POM elements to the effective POM for the >> CI process but I don't want their POM to have to include all the extra >> elements for Jacoco and Sonar (and whatever else we add in the future > >> I can do this with profiles but then their POM will have everything in it. >> I can do this with a parent POM but they already have a parent POM >> (springboot) so that they can run locally. >> > > If you have springboot as parent it might be a good choice to use spring > as bom instead of as a parent...than you can control things different and > better... > > Does it not work ? > > So where is the difference for a CI pom and usual pom file ? > > > > I would have to insert my > >> parent pom in between and that seems fragile since mine is only for CI >> builds. >> > > What exactly is fragile here? > > > >> I can't do this with the settings.xml, on the build server, because it >> doesn't have all the required elements. >> > > Sure the settings.xml has a different purpose... > > >> I hope that there is something obvious that I've missed (like a Jenkins >> plugin) but I'm about to give up and just require the developers to live >> with an excessively complicated POM file. >> > > > Maybe it's worth to take al look at the tiles-maven-plugin[1] which might > help here... > > > Maybe you can give an example what becomes so long or complicated ? > > > Kind regards > Karl Heinz Marbaise > > [1]: https://github.com/repaint-io/maven-tiles > -- George Kopf