如何通过Maven动态更新父POM的artifactId与版本?
更新Maven父POM的artifactId与version的方法
当然可以更新父POM的artifactId和version!Versions插件不止能修改子项目版本,也有对应的手段处理父POM的配置,我给你拆解下具体操作:
1. 更新父POM的版本号
如果你只是想修改父POM的version,可以用versions:update-parent目标——它既可以自动匹配仓库里的最新版本,也支持指定具体版本:
- 自动更新到最新的快照版本:
mvn org.codehaus.mojo:versions-maven-plugin:2.7:update-parent -DallowSnapshots=true - 指定具体版本号进行更新:
mvn org.codehaus.mojo:versions-maven-plugin:2.7:update-parent -DparentVersion=1.1.0-SNAPSHOT
默认情况下,这个目标只会查找正式发布(release)版本,加上-DallowSnapshots=true才会纳入快照版本的范围。
2. 修改父POM的artifactId(或groupId)
Versions插件没有直接修改父POMartifactId的单项目目标,但我们可以通过属性占位+修改属性的方式实现:
首先,把你的子POM里的父配置抽成属性占位:
<properties> <parent.artifactId>my-parent</parent.artifactId> <parent.version>1.0.0</parent.version> </properties> <parent> <groupId>com.company</groupId> <artifactId>${parent.artifactId}</artifactId> <version>${parent.version}</version> </parent>
之后就可以用versions:set-property来修改对应的属性值了:
# 修改父POM的artifactId mvn org.codehaus.mojo:versions-maven-plugin:2.7:set-property -Dproperty=parent.artifactId -DnewValue=new-parent-artifactId # 用同样的方式修改父POM的version也可行 mvn org.codehaus.mojo:versions-maven-plugin:2.7:set-property -Dproperty=parent.version -DnewValue=1.2.3-SNAPSHOT
额外提示
- 如果是多模块项目,想要批量修改所有子模块的父POM配置,只需要在命令后加上
-DprocessAllModules参数,插件就会遍历所有模块执行操作。 - 修改
artifactId时一定要谨慎,这会直接改变依赖的坐标,务必确保新的artifactId对应的父POM已经存在于你的本地或远程仓库中。
内容的提问来源于stack exchange,提问作者dehasi
相关产品推荐
相关产品推荐

