It’s a good habit to use the latest versions of the dependencies you use. Not only because the updated version might contain new features or better performance (one can hope), but also because bugs are fixed and security issues are tackled. If you go about it by hand, however, updating dependencies is a boring and tedious task. Luckily for us, there is the Maven
versions plugin to help us.
Check Which Dependencies/Plugins/Properties Need Updating
If you need a report on which dependencies, plugins or properties used for versioning can be upgraded, run one of these:
versions:display-dependency-updatesscans a project’s dependencies and produces a report of those dependencies which have newer versions available.
versions:display-plugin-updatesscans a project’s plugins and produces a report of those plugins which have newer versions available, taking care of Maven version prerequisites.
versions:display-property-updatesscans a project and produces a report of those properties which are used to control artifact versions and which properties have newer versions available.
If you have a parent section, the following command updates the version to the latest available:
$ mvn versions:update-parent
Update To Latest Versions
To upgrade all your dependencies to the latest versions, use:
$ mvn versions:use-latest-versions
Update a Particular Property with Bounds
To upgrade dependencies that get their version from the
<properties> section of your POM to version that has bounds:
$ mvn versions:update-property -Dproperty='cucumber.version' -DnewVersion='(,4.99]'
In this case, the lower bound is unspecified (and exclusive as inidicated by the
() and the upper bound in
4.99 inclusive. You can tweak
-DnewVersion to your liking.
versions plugin makes it easy for us the see which dependencies are outdated and can even update the dependencies for us with a single command. After updating, don’t forget to run your test suite and run the application to make sure nothing broke!
This has been tested on MacOS with the following Maven and
$ mvn --version Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f) Maven home: /usr/local/Cellar/maven/3.6.3_1/libexec Java version: 13.0.2, vendor: N/A, runtime: /usr/local/Cellar/openjdk/13.0.2+8_2/libexec/openjdk.jdk/Contents/Home Default locale: en_NL, platform encoding: UTF-8 OS name: "mac os x", version: "10.15.4", arch: "x86_64", family: "mac" $ mvn help:describe -Dplugin=versions -Dminimal | grep '^Version: ' Version: 2.7
The documentation can be found here.