Resolve ranges
A pom may specify version ranges for certain dependencies.
<dependencies>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-project</artifactId>
<version>[2.0.7, 2.0.9)</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-utils</artifactId>
<version>[1.5.0, 1.5.1 ]</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>[3.0, 3.8.2)</version>
</dependency>
</dependencies>
Using the resolve-ranges goal, the version ranges can be set to the specific version used in the build.
mvn versions:resolve-ranges
The pom dependencies are modified to look like the following.
<dependencies>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-project</artifactId>
<version>2.0.8</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-utils</artifactId>
<version>1.5.1</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
</dependency>
</dependencies>
You can restrict which dependencies should have their ranges collapsed. For example, the following will only match dependencies that match the groupId “org.codehaus.plexus” and artifactId “plexus-utils”
mvn versions:resolve-ranges -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:resolve-ranges -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:resolve-ranges -DprocessDependencies=false
While this example will only process the project/dependencies
section of your pom:
mvn versions:resolve-ranges -DprocessDependencyManagement=false