| ----- |
| Apache Software Foundation Parent POM |
| ----- |
| Benson Margulies |
| Hervé Boutemy |
| Karl Heinz Marbaise |
| ----- |
| 2016-05-09 |
| ----- |
| |
| ~~ Licensed to the Apache Software Foundation (ASF) under one |
| ~~ or more contributor license agreements. See the NOTICE file |
| ~~ distributed with this work for additional information |
| ~~ regarding copyright ownership. The ASF licenses this file |
| ~~ to you under the Apache License, Version 2.0 (the |
| ~~ "License"); you may not use this file except in compliance |
| ~~ with the License. You may obtain a copy of the License at |
| ~~ |
| ~~ http://www.apache.org/licenses/LICENSE-2.0 |
| ~~ |
| ~~ Unless required by applicable law or agreed to in writing, |
| ~~ software distributed under the License is distributed on an |
| ~~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| ~~ KIND, either express or implied. See the License for the |
| ~~ specific language governing permissions and limitations |
| ~~ under the License. |
| |
| ~~ NOTE: For help with the syntax of this file, see: |
| ~~ https://maven.apache.org/doxia/references/apt-format.html |
| |
| 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. By using this project as a parent, |
| a project gets these settings. |
| |
| Most projects 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>>: {{{https://www.apache.org/licenses/LICENSE-2.0.txt}Apache-2.0}}. |
| |
| ** <<organization>>: ${project.organization.name} |
| |
| ** <<url>>: {{<<<https://www.apache.org/>>>}}. You should override this. |
| |
| ** <<repositories>>: The pom adds the Apache snapshot |
| repository ({{<<<https://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 <<<distMgmt(Releases|Snapshots)(Name|Url)>>> POM properties (<<<distMgmtReleasesName>>>, <<<distMgmtReleasesUrl>>>, <<<distMgmtSnapshotsName>>> and <<<distMgmtSnapshotsUrl>>>) |
| that you can override to change the names and locations. |
| |
| ** <<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.html}Plugin Management report}} for |
| the complete list with versions. |
| |
| ** There are used properties <<<version.\<artifactId\>>>> for defining each version of plugin, except: |
| |
| *** <<<version.apache-resource-bundles>>> is used for: <apache-jar-resource-bundle> and <apache-source-release-assembly-descriptor> |
| |
| *** <<<version.maven-plugin-tools>>> is used for: <maven-plugin-annotations>, <maven-plugin-plugin> and <maven-plugin-report-plugin> |
| |
| *** <<<version.maven-surefire>>> is used for: <maven-failsafe-plugin>, <maven-surefire-plugin> and <maven-surefire-report-plugin> |
| |
| [] |
| |
| ** The compiler plugin is set to default to <<Java $context.get("maven.compiler.target")>> (<<<maven.compiler.target>>> property) |
| and $context.get("project.build.sourceEncoding") source (<<<project.build.sourceEncoding>>> property). |
| |
| ** The jar plugin is set to add default specification and implementation entries. |
| |
| ** The resources plugin is set for $context.get("project.build.sourceEncoding"). |
| |
| ** The release plugin is set, via the |
| \<useReleaseProfiles\> configuration element, to enable the |
| <<apache-release>> profile during <<<release:perform>>> execution and to disable |
| \<useReleaseProfiles\>. |
| |
| * <<plugins>>: The plugins section configures three executions: |
| |
| ** maven-remote-resources-plugin for {{{/apache-resource-bundles/jar/}org.apache.apache.resources:apache-jar-resource-bundle:$context.get("version.apache-resource-bundles")}}. |
| |
| ** maven-site-plugin:attach-descriptor |
| |
| ** maven-enforcer-plugin to check Maven and Java build prerequisites, configured via properties: |
| |
| *** <<<minimalMavenBuildVersion>>> property: default value is <<Maven $context.get("minimalMavenBuildVersion")>> |
| |
| *** <<<minimalJavaBuildVersion>>> property: default value is <<Java $context.get("minimalJavaBuildVersion")>> |
| |
| [] |
| |
| * <<Reproducible Builds>>: since version 22 of this parent POM, managed plugins versions are expected to be compliant with {{{https://reproducible-builds.org/}Reproducible Builds}}. |
| |
| To choose their own release timestamp in output archives, projects using this POM as parent should override with a property in their root POM: |
| |
| +------+ |
| <properties> |
| <project.build.outputTimestamp>10</project.build.outputTimestamp> |
| </properties> |
| +------+ |
| |
| The value will be updated by Maven Release Plugin during releases. If a project wants to disable Reproducible Builds, just define |
| the property value with any single non-numeric character. |
| |
| [] |
| |
| 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: |
| {{{/apache-resource-bundles/source-release/}org.apache.apache.resources:apache-source-release-assembly-descriptor:$context.get("version.apache-resource-bundles")}} |
| is added as dependency, and an execution is configured with <<<source-release-assembly>>> id.\ |
| The plugin is configured to take a <<<descriptorRef>>> name from the |
| <<sourceReleaseAssemblyDescriptor>> property, which by default is |
| set to <<<source-release>>> (zip only): you can override the property with |
| <<<source-release-zip-tar>>> (both zip and tar) or <<<source-release-tar>>> (tar only) values.\ |
| If you want to avoid this default assembly execution to provide your own mechanism to produce the source release archive, |
| you can disable the execution by configuring <<<skipAssembly>>> parameter for this <<<source-release-assembly>>> execution id |
| |
| * 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>>>. |
| |
| * checksum-maven-plugin: configured to create a checksum file(s) for source release as |
| required by {{{http://www.apache.org/dev/release-distribution#sigs-and-sums}Apache release distribution policy}}. |
| |
| [] |
| |
| When doing a release with maven-release-plugin, this creates files in <<<target/checkout/target>>> ready |
| to be copied to projects' {{{http://www.apache.org/dev/release-distribution}Apache <<</dist/>>> release distribution}} |
| directory: |
| |
| * <<<$\{artifactId\}-$\{version\}-source-release.[zip|tar.gz]>>>: the source release archive(s) |
| |
| * <<<$\{artifactId\}-$\{version\}-source-release.[zip|tar.gz].sha512>>>: their checksum(s) |
| |
| * <<<$\{artifactId\}-$\{version\}-source-release.[zip|tar.gz].asc>>>: their signature(s) |
| |
| [] |
| |
| Those files also end up in the staging repository and Maven Central. |
| |
| Settings Configuration |
| |
| You can have a look at the page in Apache website |
| {{{https://www.apache.org/dev/publishing-maven-artifacts.html}Publishing Maven Artifacts}}. |
| |
| You can test your environment setup using <<<-Papache-release>>> with the command line. |
| |
| History |
| |
| #if( $project.version.endsWith( "SNAPSHOT" ) ) |
| master: {{{https://github.com/apache/maven-apache-parent/tree/master/pom.xml}$project.version}} |
| ({{{https://github.com/apache/maven-apache-parent/compare/apache-30...master}diff}}) |
| #end |
| #macro ( display $version $date ) |
| #**##set( $prev = $version - 1 ) |
| | {{{https://github.com/apache/maven-apache-parent/tree/apache-$version/pom.xml}$version}} |
| | ({{{https://github.com/apache/maven-apache-parent/compare/apache-$prev...apache-$version}diff}}) | $date | |
| #end |
| |
| *--------------+------------+ |
| || <<Version>> || <<Release Date>> || |
| *--------------+------------+ |
| #display( 31, '2023-11-08' ) |
| *--------------+------------+ |
| #display( 30, '2023-06-11' ) |
| *--------------+------------+ |
| #display( 29, '2022-12-11' ) |
| *--------------+------------+ |
| #display( 28, '2022-11-14' ) |
| *--------------+------------+ |
| #display( 27, '2022-07-10' ) |
| *--------------+------------+ |
| #display( 26, '2022-04-09' ) |
| *--------------+------------+ |
| #display( 25, '2022-02-20' ) |
| *--------------+------------+ |
| #display( 24, '2021-07-13' ) |
| *--------------+------------+ |
| #display( 23, '2020-01-25' ) |
| *--------------+------------+ |
| #display( 22, '2020-01-08' ) |
| *--------------+------------+ |
| #display( 21, '2018-08-21' ) |
| *--------------+------------+ |
| #display( 20, '2018-07-07' ) |
| *--------------+------------+ |
| #display( 19, '2018-01-24' ) |
| *--------------+------------+ |
| #display( 18, '2016-05-18' ) |
| *--------------+------------+ |
| #display( 17, '2015-04-24' ) |
| *--------------+------------+ |
| #display( 16, '2014-11-13' ) |
| *--------------+------------+ |
| #display( 15, '2014-09-24' ) |
| *--------------+------------+ |
| #display( 14, '2014-03-06' ) |
| *--------------+------------+ |
| #display( 13, '2013-01-20' ) |
| *--------------+------------+ |
| #display( 12, '2012-11-01' ) |
| *--------------+------------+ |
| #display( 11, '2012-08-08' ) |
| *--------------+------------+ |
| #display( 10, '2011-08-09' ) |
| *--------------+------------+ |
| #display( 9, '2011-02-15' ) |
| *--------------+------------+ |
| #display( 8, '2010-11-26' ) |
| *--------------+------------+ |
| #display( 7, '2009-12-29' ) |
| *--------------+------------+ |