Apache Software Foundation Parent POM

This project consists of a POM that contains settings that are likely to be useful to any Apache project that is building and releasing code with Maven 2/3. By using this project as a parent, a project gets these settings.

Most project will want to override some of these settings.

The following is a list of the items configured in this POM:

  • Top-level project properties:
    • license: The Apache Software License, version 2.0.
    • organization: The Apache Software Foundation
    • url: http://www.apache.org/. You should override this.
    • repositories: The pom adds the Apache snapshot repository (http://repository.apache.org/snapshots)
    • distributionManagement: The POM sets up for releases to the Apache Nexus instance at https://repository.apache.org/service/local/staging/deploy/maven2 and snapshots to https://repository.apache.org/content/repositories/snapshots. Note that there are POM parameters (distMgmtSnapshotsName and distMgmtSnapshotsUrl) that you can override to change the snapshot location.
    • mailingLists: The POM sets up generic Apache announcement lists. You should override this.
  • pluginManagement: The plugin management section specifies versions of a list of plugins. See the Plugin Management report for the complete list with versions.
    • The compiler plugin is set to default to Java 1.4 and UTF-8 source.
    • the jar plugin is set to add default specification and implementation entries.
    • the resources plugin is set for UTF-8.
    • the release plugin: the release plugin is set, via the <arguments> configuration element, to enable the apache-release profile for all executions and to disable <useReleaseProfiles>. You can remove this with an empty <arguments/> element in the configuration of the release plugin.
  • plugins: The plugins section configures one execution:
    • maven-remote-resources-plugin for org.apache:apache-jar-resource-bundle:1.4.

The apache-release Profile

As noted above, this pom configures the release plugin to enable the apache-release profile for all executions of the release plugin. The profile includes the following plugins:

  • maven-assembly-plugin: org.apache.apache.resources:apache-source-release-assembly-descriptor:1.0.3 is in the dependencies, and an execution is configured.The plugin is configured to take a descriptorRef name from the sourceReleaseAssemblyDescriptor property, which by default is set to 'source-release'.
  • maven-deploy-plugin
  • maven-source-plugin: configured to build and attach a source jar.
  • maven-javadoc-plugin: configured to build and attach a javadoc jar.
  • maven-gpg-plugin: configured to sign everything. It expects to find a passphrase in ${gpg.passphrase}, presumably in your settings.xml.

Settings Configuration

You can have a look at the page in Apache website Publishing Maven Artifacts.

You can test your environment setup using -Papache-release with the command line.


Version Release Date
14 (diff) 2014-03-06
13 (diff) 2013-01-20
12 (diff) 2012-11-01
11 (diff) 2012-08-08
10 (diff) 2011-08-09
9 (diff) 2011-02-15
8 (diff) 2010-11-26
7 (diff) 2009-12-29
6 (diff) 2009-04-24