Replacing -SNAPSHOT versions with their corresponding releases
If you need a new feature that is being developed in a dependency of your project, and that feature has not been released yet, you may decide to add a dependency on the -SNAPSHOT version of the next release:
<dependencies>
<dependency>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-core-api</artifactId>
<version>1.0-alpha-7-SNAPSHOT</version>
</dependency>
</dependencies>
At some stage, this -SNAPSHOT version will be released. The use-releases
goal, will look at all your project
dependencies and see what -SNAPSHOT versions have been released. If any of your projects -SNAPSHOT versions have
a corresponding release version, then it will replace the -SNAPSHOT with its corresponding release version.
mvn versions:use-releases
When org.codehaus.cargo:cargo-core-api releases the 1.0-alpha-7 version this would update the pom to look like:
<dependencies>
<dependency>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-core-api</artifactId>
<version>1.0-alpha-7</version>
</dependency>
</dependencies>
You can restrict which dependencies should be processed. For example, the following will only match dependencies that match the groupId “org.codehaus.plexus” and artifactId “plexus-utils”
mvn versions:use-releases -Dincludes=org.codehaus.plexus:plexus-utils
The includes
and excludes
parameters follow the format groupId:artifactId:type:classifier
.
Use a comma separated separated list to specify multiple includes. Wildcards (*) can also be used to match
multiple values.
This example will match anything with the groupId “org.codehaus.plexus” and anything with the groupId and artifactId matching “junit”.
mvn versions:use-releases -Dincludes=org.codehaus.plexus:*,junit:junit
By default, both the project/dependencyManagment
and project/dependencies
sections will be processed.
You can use the processDependencies
and processDependencyManagement
parameters to control which sections
are processed.
This example will only process the project/dependencyManagment
section of your pom:
mvn versions:use-releases -DprocessDependencies=false
While this example will only process the project/dependencies
section of your pom:
mvn versions:use-releases -DprocessDependencyManagement=false