Preparing a release goes through the following release phases:
To prepare a release execute this command:
mvn release:prepare
Note: If an error occurs, or the process is cancelled, then running this command again will pick up from where the last one left off.
If you wish to start again, use:
mvn release:prepare -Dresume=false
Alternatively, you can use:
mvn release:clean release:prepare
Note: If any changes have been made to your source files they might need to be reverted before you restart the prepare process. You can use release:rollback to make the plugin do it for you.
You will be prompted for the version number for each module of the project. If you prefer that every module gets the same version as the parent POM, you can set the option autoVersionSubmodules to true. Now you will be asked only once for the release version and the next development version.
It is possible to generate a release-pom.xml file for each project that contains the fully resolved project used at release time as a record for later. As of the 2.0 release, this requires calling an alternate goal:
mvn release:prepare-with-pom
This goal is equivalent to the release:prepare goal, except that it requires a previous build of the project to exist to properly populate the release-pom.xml files.
By default, if you do not specify a tag name, a default tag name of artifactId-version will be suggested (and if running non-interactively used).
You can specify the exact tag name to use from the command line by passing the tag property, but if you want to have the tag name generated, but just change the default pattern, you can use the tagNameFormat configuration option.
For example to have the tag name default to the version number prefixed with a v you could configure your pom like so:
<project> [...] <build> [...] <plugins> [...] <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-release-plugin</artifactId> <version>3.0.0-M4</version> <configuration> <tagNameFormat>v@{project.version}</tagNameFormat> </configuration> </plugin> [...] </plugins> [...] </build> [...] </project>
The tagNameFormat uses @{ and } as delimiters in order to ensure that the default Maven property interpolation does not substitute the values before the version transformation has taken place.
The following properties are supported:
The project. prefix is optional and may be omitted.