This article won’t be long but can be a lifesaver. If you use Maven, how many times did you need to manually update POM versions in an entire modules hierarchy? For me, the answer is: "too many".
When you project grows to include many Maven modules, releasing a new version can be a nightmare. Sure, you have the maven-release-plugin. It does many things under the cover but in some cases, I saw it fail. What do you do then? You manually change your POM version in your modules hierarchy:
- the version of the module’s POM
- the version of the parent’s POM
It’s not only a boring taks, it’s also an error-prone one. Imagine my surprise when I found the maven-version-plugin and its little jewel of a command line:
mvn versions:set -DnewVersion=1.0.1-SNAPSHOT
And presto, the plugin does it all for you, entering each module and changing the previous informations:
[INFO] [versions:set] [INFO] Searching for local aggregator root... [INFO] Local aggregation root: D:\workspace\Champion Utilities [INFO] Processing ch.frankel.champions.license:license [INFO] Updating project ch.frankel.champions.license:license [INFO] from version 1.0.0 to 1.0.1-SNAPSHOT [INFO] [INFO] Processing ch.frankel.champions.license:license-check [INFO] Updating parent ch.frankel.champions.license:license [INFO] from version 1.0.0 to 1.0.1-SNAPSHOT [INFO] Updating project ch.frankel.champions.license:license-check [INFO] from version 1.0.0 to 1.0.1-SNAPSHOT [INFO] [INFO] Processing ch.frankel.champions.license:license-common [INFO] Updating parent ch.frankel.champions.license:license [INFO] from version 1.0.0 to 1.0.1-SNAPSHOT [INFO] Updating project ch.frankel.champions.license:license-common [INFO] from version 1.0.0 to 1.0.1-SNAPSHOT [INFO] [INFO] Processing ch.frankel.champions.license:license-generation [INFO] Updating parent ch.frankel.champions.license:license [INFO] from version 1.0.0 to 1.0.1-SNAPSHOT [INFO] Updating project ch.frankel.champions.license:license-generation [INFO] from version 1.0.0 to 1.0.1-SNAPSHOT
Give it a try, it’s a real powerful yet easy!