Maven Project Parent POM

This POM is the common parent of all of the Maven components in the Apache Maven project. Most of its contents are pinning down version numbers of plugins. It does provide minimal dependencyManagement for plexus-component and plugin-tools annotations.

This POM contains Maven developers information for the Project Team report, sorted by role and id. See the LDAP extract for more accurate committers and PMC members lists.

The reporting Profile

This POM provides reporting profile for rendering documentation during site generation:

mvn -Preporting site

See Plugins report for a list of configured report plugins.

The jdk-toolchain Profile

This POM provides jdk-toolchain profile to activate JDK selection as a toolchain with version requirement configured as minimum java version for the project.

The format Profile

Since version 38 the format profile can be used to explicitly format source files with spotless-maven-plugin according to Maven standards. This requires the phase process-sources. After applying bigger reformatting it is recommended to add or update a .git-blame-ignore-revs file in the root of the repository containing a line with the SHA1 of the formatting commit to ignore those changes when using git blame (or equivalent concepts). This is automatically considered by GitHub and can optionally be considered with local git blame

Site Publication

This POM prepares site publication to Apache Maven's site svnpubsub. Every inheriting POM needs to define maven.site.path property with relative path to ${project.artifactId}-LATEST publication uri, and define distributionManagement to avoid automatic inheritance from parent:

  <properties>
    <maven.site.path>xxx-archives/${project.artifactId}-LATEST</maven.site.path>
  </properties>
  <distributionManagement>
    <site>
      <id>apache.website</id>
      <url>scm:svn:https://svn.apache.org/repos/infra/websites/production/maven/components/${maven.site.path}</url>
    </site>
  </distributionManagement>

Once this is configured, the site can be published with:

mvn -Preporting site site:stage
mvn scm-publish:publish-scm

See deploying Maven components reference documentation for more information.

History

As of version 38, this POM sets the Java source and target versions to 1.8. Thus, as any plugin (or other component) moved to version 38+ of this POM, it moves to requiring Java 1.8 (was Java 1.5 since version 21, Java 1.6 since version 27, and Java 1.7 since version 34).