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


