版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010096900/article/details/81315655
需求描述
复杂的maven项目,通常包含多个子模块项目,如果手工逐个去修改每个pom.xml,会非常的耗时耗力,而且容易出错和遗漏。
解决方案
借助maven的versions插件,可以比较容易的解决这个问题。方法如下:
mvn versions:set -DnewVersion=0.29-SNAPSHOT
versions插件还提供了其它灵活的功能,可以通过"mvn versions:help"来查看帮助信息,根据选项的描述来实验一下实际效果。
bj-m-211510a:target jinguang1$ mvn versions:help
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------< org.apache.maven:standalone-pom >-------------------
[INFO] Building Maven Stub Project (No POM) 1
[INFO] --------------------------------[ pom ]---------------------------------
[INFO]
[INFO] --- versions-maven-plugin:2.5:help (default-cli) @ standalone-pom ---
[INFO] Versions Maven Plugin 2.5
Versions Plugin for Maven. The Versions Plugin updates the versions of
components in the POM.
This plugin has 31 goals:
versions:commit
Removes the initial backup of the pom, thereby accepting the changes.
versions:compare-dependencies
Compare dependency versions of the current project to dependencies or
dependency management of a remote repository project. Can optionally update
locally the project instead of reporting the comparison
versions:dependency-updates-report
Generates a report of available updates for the dependencies of a project.
versions:display-dependency-updates
Displays all dependencies that have newer versions available. It will also
display dependencies which are used by a plugin or defined in the plugin
within a pluginManagement.
versions:display-parent-updates
Displays any updates of the project's parent project
versions:display-plugin-updates
Displays all plugins that have newer versions available.
versions:display-property-updates
Displays properties that are linked to artifact versions and have updates
available.
versions:force-releases
Replaces any -SNAPSHOT versions with a release version, older if necessary (if
there has been a release).
versions:help
Display help information on versions-maven-plugin.
Call mvn versions:help -Ddetail=true -Dgoal=<goal-name> to display parameter
details.
versions:lock-snapshots
Attempts to resolve unlocked snapshot dependency versions to the locked
timestamp versions used in the build. For example, an unlocked snapshot
version like '1.0-SNAPSHOT' could be resolved to '1.0-20090128.202731-1'. If a
timestamped snapshot is not available, then the version will remained
unchanged. This would be the case if the dependency is only available in the
local repository and not in a remote snapshot repository.
versions:plugin-updates-report
Generates a report of available updates for the plugins of a project.
versions:property-updates-report
Generates a report of available updates for properties of a project which are
linked to the dependencies and/or plugins of a project.
versions:resolve-ranges
Attempts to resolve dependency version ranges to the specific version being
used in the build. For example a version range of '[1.0, 1.2)' would be
resolved to the specific version currently in use '1.1'.
versions:revert
Restores the pom from the initial backup.
versions:set
Sets the current project's version and based on that change propagates that
change onto any child modules as necessary.
versions:set-property
Set a property to a given version without any sanity checks. Please be careful
this can lead to changes which might not build anymore. The sanity checks are
done by other goals like update-properties or update-property etc. they are
not done here. So use this goal with care.
versions:set-scm-tag
Updates the current project's SCM tag.
versions:unlock-snapshots
Attempts to resolve unlocked snapshot dependency versions to the locked
timestamp versions used in the build. For example, an unlocked snapshot
version like '1.0-SNAPSHOT' could be resolved to '1.0-20090128.202731-1'. If a
timestamped snapshot is not available, then the version will remained
unchanged. This would be the case if the dependency is only available in the
local repository and not in a remote snapshot repository.
versions:update-child-modules
Scans the current projects child modules, updating the versions of any which
use the current project to the version of the current project.
versions:update-parent
Sets the parent version to the latest parent version.
versions:update-properties
Sets properties to the latest versions of specific artifacts.
versions:update-property
Sets a property to the latest version in a given range of associated
artifacts.
versions:use-dep-version
versions:use-latest-releases
Replaces any release versions with the latest release version.
versions:use-latest-snapshots
Replaces any release versions with the latest snapshot version (if it has been
deployed).
versions:use-latest-versions
Replaces any version with the latest version.
versions:use-next-releases
Replaces any release versions with the next release version (if it has been
released).
versions:use-next-snapshots
Replaces any release versions with the next snapshot version (if it has been
deployed).
versions:use-next-versions
Replaces any version with the latest version.
versions:use-reactor
Replaces any versions with the corresponding version from the reactor.
versions:use-releases
Replaces any -SNAPSHOT versions with the corresponding release version (if it
has been released).