Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Section
titlePOM Configuration Collector

Use the following to add the plugin to your POM to collect the build information:

Code Block Placeholder
<plugin>
  <groupId>${project-group-id}</groupId>
  <artifactId>${project-artifact-id}</artifactId>
  <version>${project-version}</version>
  <executions>
    <execution>
      <phase>initialize</phase>
      <goals>
        <goal>provide-buildmetadata</goal>
      </goals>
    </execution>
  </executions>
</plugin>        

If you are using Git, you may want to add the remoteVersion to compare with. In the following example we compare to origin/master:

Code Block Placeholder
<plugin>
  <groupId>${project-group-id}</groupId>
  <artifactId>${project-artifact-id}</artifactId>
  <version>${project-version}</version>
  <executions>
    <execution>
      <phase>initialize</phase>
      <goals>
        <goal>provide-buildmetadata</goal>
      </goals>
      <configuration>
        <remoteVersion>origin/master</remoteVersion>
      </configuration>
    </execution>
  </executions>
</plugin>        

Please refer to Accessing Artifacts on information to download the plugin.

The file buildmetadata.properties is written to the META-INF folder by default. You may change the by changing the destination of the propertiesOutputFile property.

For multi projects it is especially useful to map the output file to packaging types. This is done by (following is the default configuration if it is not specified):

Code Block Placeholder
<plugin>
  <groupId>${project-group-id}</groupId>
  <artifactId>${project-artifact-id}</artifactId>
  <version>${project-version}</version>
<configuration>
    <addProjectInfo>true</addProjectInfo>
    <propertyOutputFileMapping>
      <fileMapping>
        <packaging>war</packaging>
        <outputFile>${project.build.directory}/${project-artifact-id}-${project-version}/META-INF/build.properties</outputFile>
      </fileMapping>
      <fileMapping>
        <packaging>ear</packaging>
        <outputFile>${project.build.directory}/${project-artifact-id}-${project-version}/META-INF/build.properties</outputFile>
      </fileMapping>
      <fileMapping>
        <packaging>sar</packaging>
        <outputFile>${project.build.directory}/${project-artifact-id}-${project-version}/META-INF/build.properties</outputFile>
      </fileMapping>
      <fileMapping>
        <packaging>rar</packaging>
        <outputFile>${project.build.directory}/${project-artifact-id}-${project-version}/META-INF/build.properties</outputFile>
      </fileMapping>
      <fileMapping>
        <packaging>par</packaging>
        <outputFile>${project.build.directory}/${project-artifact-id}-${project-version}/META-INF/build.properties</outputFile>
      </fileMapping>
      <fileMapping>
        <packaging>atlassian-plugin</packaging>
        <outputFile>${project.build.outputDirectory}/META-INF/build.properties</outputFile>
      </fileMapping>
      <fileMapping>
        <packaging>jar</packaging>
        <outputFile>${project.build.outputDirectory}/META-INF/build.properties</outputFile>
      </fileMapping>
      <fileMapping>
        <packaging>ejb</packaging>
        <outputFile>${project.build.outputDirectory}/META-INF/build.properties</outputFile>
      </fileMapping>
      <fileMapping>
        <packaging>maven-archetype</packaging>
        <outputFile>${project.build.outputDirectory}/META-INF/build.properties</outputFile>
      </fileMapping>
      <fileMapping>
        <packaging>maven-plugin</packaging>
        <outputFile>${project.build.outputDirectory}/META-INF/build.properties</outputFile>
      </fileMapping>
      <fileMapping>
        <packaging>eclipse-plugin</packaging>
        <outputFile>${project.build.directory}/build.properties</outputFile>
      </fileMapping>
      <fileMapping>
        <packaging>eclipse-feature</packaging>
        <outputFile>${project.build.directory}/build.properties</outputFile>
      </fileMapping>
      <fileMapping>
        <packaging>eclipse-repository</packaging>
        <outputFile>${project.build.directory}/build.properties</outputFile>
      </fileMapping>
      <fileMapping>
        <packaging>eclipse-update-site</packaging>
        <outputFile>${project.build.directory}/build.properties</outputFile>
      </fileMapping>
      <fileMapping>
        <packaging>targetplatform</packaging>
        <outputFile>${project.build.directory}/build.properties</outputFile>
      </fileMapping>
      <fileMapping>
        <packaging>pom</packaging>
        <outputFile>${project.build.directory}/build.properties</outputFile>
      </fileMapping>
    </propertyOutputFileMapping>
  </configuration>
</plugin>     

Packaging types not specified here default to propertiesOutputFile.

If you want to disable the propertyOutputFileMapping, set activateOutputFileMapping to false.

Section
titleXML report

The properties file with the build metadata is short and easy to parse. But if you want to process the information to feed other processes, an XML format is more convenient.

The file is created per default in the target folder of your project. The properties file is created per default in the META-INF folder and therefore included in the artifact (if the artifact is an archive and contains a META-INF folder).

If you want to replace the properties file with the XML file, use the following configuration:

Code Block Placeholder
<plugin>
  <groupId>${project-group-id}</groupId>
  <artifactId>${project-artifact-id}</artifactId>
  <version>${project-version}</version>
  <executions>
    <execution>
      <phase>initialize</phase>
      <goals>
        <goal>provide-buildmetadata</goal>
      </goals>
      <configuration>
        <createPropertiesReport>false</createPropertiesReport>
        <xmlOutputFile>${project.build.outputDirectory}/META-INF/buildmetadata.xml</xmlOutputFile>
      </configuration>
    </execution>
  </executions>
</plugin>        

The XSDs for the generated XML file are part of the buildmetadata doctype.

Here is an example of SNAPSHOT build of the smartics-commons project:

Code Block Placeholder
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<buildmetadata xmlns="http://www.smartics.de/project/process/implementation/buildmetadata" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.smartics.de/project/process/implementation/buildmetadata http://www.smartics.de/project/process/implementation/buildmetadata">
  <name>0.5.3-20131003r15895-locally-modified-SNAPSHOT</name>
  <version>0.5.3-SNAPSHOT</version>
  <groupId>de.smartics.util</groupId>
  <artifactId>smartics-commons</artifactId>
  <date>2013-10-03T15:46:26</date>
  <timestamp>1380807986504</timestamp>
  <build-year>2013</build-year>
  <copyright-year>2011-2013</copyright-year>
  <scm>
    <revision>15895</revision>
    <revision-date>2013-09-21T20:39:41</revision-date>
    <url>scm:svn:https://www.smartics.eu/svn/public/util/trunk/smartics-commons</url>
    <locally-modified-files>
      <file modtype="modified">pom.xml</file>
    </locally-modified-files>
  </scm>
  <runtime>
    <build-server>Midgard</build-server>
    <build-user>robert.reiner</build-user>
    <os>
      <arch>amd64</arch>
      <name>Windows 7</name>
      <version>6.1</version>
    </os>
    <java>
      <name>Java(TM) SE Runtime Environment</name>
      <version>1.6.0_25-b06</version>
      <vendor>Sun Microsystems Inc.</vendor>
      <vm>Java HotSpot(TM) 64-Bit Server VM</vm>
      <compiler>HotSpot 64-Bit Tiered Compilers</compiler>
    </java>
    <maven>
      <version>3.0.5</version>
      <execution-project>de.smartics.util:smartics-commons:jar:0.5.3-SNAPSHOT</execution-project>
      <is-excution-root>true</is-excution-root>
      <goals>
        <goal>clean</goal>
        <goal>package</goal>
      </goals>
      <filters/>
      <profiles>
        <profile source="settings.xml">nexus</profile>
        <profile source="settings.xml">smartics</profile>
      </profiles>
    </maven>
  </runtime>
  <misc>
    <metadata name="build.date.pattern">dd.MM.yyyy HH:mm:ss</metadata>
    <metadata name="build.scmLocallyModified">true</metadata>
  </misc>
</buildmetadata>

...

Section
titleReferences

Section
titleResources