Hi George,

based on the comments in your example...

Are you really using Maven 2 ? Please remove it...cause it's long end of life...


Furthermore the repositories should be defined in users settings.xml and not inside the pom file...The distributionManagement should be done in a corporate pom only once...

Kind regards
Karl Heinz Marbaise


On 05/06/17 14:42, George Kopf wrote:
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 <mailto: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

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
For additional commands, e-mail: users-h...@maven.apache.org

Reply via email to