Skip to content

Commit

Permalink
#725 Migrating "Advancing dependency versions" to Markdown
Browse files Browse the repository at this point in the history
  • Loading branch information
jarmoniuk authored and slawekjaranowski committed Oct 10, 2022
1 parent 3e1278d commit 021e437
Show file tree
Hide file tree
Showing 2 changed files with 144 additions and 167 deletions.
167 changes: 0 additions & 167 deletions src/site/apt/examples/advancing-dependency-versions.apt.vm

This file was deleted.

144 changes: 144 additions & 0 deletions src/site/markdown/examples/advancing-dependency-versions.md.vm
@@ -0,0 +1,144 @@
title: Advancing dependency versions
autor: Stephen Connolly
date: 2009-08-12

<!---
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
https://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.
-->

Advancing dependency versions
=============================

There are a number of goals which can be used to advance dependency versions:

- [versions:use-next-releases](../use-next-releases-mojo.html) searches the pom for all non-SNAPSHOT versions which
have been a newer release and replaces them with the next release version.
- [versions:use-latest-releases](../use-latest-releases-mojo.html) searches the pom for all non-SNAPSHOT versions
which have been a newer release and replaces them with the latest release version.
- [versions:use-next-snapshots](../use-next-snapshots-mojo.html) searches the pom for all non-SNAPSHOT versions
which have been a newer -SNAPSHOT version and replaces them with the next -SNAPSHOT version.
- [versions:use-latest-snapshots](../use-latest-snapshots-mojo.html) searches the pom for all non-SNAPSHOT versions
which have been a newer -SNAPSHOT version and replaces them with the latest -SNAPSHOT version.
- [versions:use-next-versions](../use-next-versions-mojo.html) searches the pom for all versions which
have been a newer version and replaces them with the next version.
[versions:use-latest-versions](../use-latest-versions-mojo.html) searches the pom for all versions which
have been a newer version and replaces them with the latest version.

All of these goals share a common set of parameters.

Deciding which goal to use
--------------------------

The following matrix should help decide which goal(s) to use:

| Goal | Modifies Release dependencies | Modifies -SNAPSHOT dependencies | Considers releases | Considers -SNAPSHOTs | Picks Next | Picks Latest |
|----------------------|:-----------------------------:|:-------------------------------:|:------------------:|:------------------------:|:----------:|:------------:|
| use-next-releases | | Yes | Yes | | Yes | |
| use-latest-releases | | Yes | Yes | | | Yes |
| use-next-snapshots | Yes | | | Yes | Yes | |
| use-latest-snapshots | Yes | | | Yes | | Yes |
| use-next-versions | Yes | Yes | Yes | If -DallowSnapshots=true | Yes | |
| use-latest-versions | Yes | Yes | Yes | If -DallowSnapshots=true | | Yes |

The columns in the above goal matrix are as follows:

- *Modified Release dependencies* when scanning the `pom.xml` for dependency to update, include those dependencies which
are for release versions (i.e. non-SNAPSHOT versions).
- *Modified -SNAPSHOT dependencies* when scanning the `pom.xml` for dependency to update, include those dependencies which
are for -SNAPSHOT versions.
- *Considers releases* when building the list of newer versions of a dependency, include release versions (i.e. non-SNAPSHOT
versions) in the list.
- *Considers releases* when building the list of newer versions of a dependency, include -SNAPSHOT versions in the list.
- *Picks Next* when the list of newer versions is sorted in increasing order, pick the first newer version in the list, i.e.
the oldest newer version available, also known as the "next" version.
- *Picks Latest* when the list of newer versions is sorted in increasing order, pick the last newer version in the list, i.e.
the newest version available, also known as the "latest" version.

Controlling which dependencies are processed
--------------------------------------------

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"

```sh
mvn versions:use-next-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".

```sh
mvn versions:use-next-releases -Dincludes=org.codehaus.plexus:*,junit:junit
```

You can pre-configure defaults for `includes` and `excludes` in your `pom.xml` if there is a specific
set of dependencies that you need to track on a regular basis, e.g.

```xml
<project>
...
<build>
...
<plugins>
...
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>versions-maven-plugin</artifactId>
<version>${pluginVersion}</version>
<configuration>
...
<includes>
<include>org.codehaus.plexus:*</include>
<include>junit:junit</include>
</includes>
...
<excludes>
<exclude>org.codehaus.plexus:plexus-utils</exclude>
</excludes>
...
</configuration>
</plugin>
...
</plugins>
...
</build>
...
</project>
```

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:

```sh
mvn versions:use-next-releases -DprocessDependencies=false
```

While this example will only process the `project/dependencies` section of your pom:

```sh
mvn versions:use-next-releases -DprocessDependencyManagement=false
```



0 comments on commit 021e437

Please sign in to comment.