在最终厌倦了maven发布插件之后,我决定继续采用更简单的方法。
我有一个项目,有几个模块。
当我做
mvn versions:set -DnewVersion=1.0.2-SNAPSHOT
它只是更改父级并跳过所有子级模块?
我究竟做错了什么?我还需要设置另一个参数吗?
在最终厌倦了maven发布插件之后,我决定继续采用更简单的方法。
我有一个项目,有几个模块。
当我做
mvn versions:set -DnewVersion=1.0.2-SNAPSHOT
它只是更改父级并跳过所有子级模块?
我究竟做错了什么?我还需要设置另一个参数吗?
我有同样的子模块引用外部父母的问题。
如果孩子的父版本与父母的本地版本匹配,那么它会更新父母和孩子的版本(可能会说SKIPPED但仍然有效,奇怪)。如果它们不匹配,那么它似乎只更新父版本并更新子项以指向新父项,它根本不会更改子项的版本。
最后我发现通配符可以解决这个问题(需要一个新版本的版本插件):
mvn org.codehaus.mojo:versions-maven-plugin:2.2:set -DnewVersion=1.5.0a -DartifactId=* -DgroupId=*
我假设你的项目结构是这样的:
parent/pom.xml
child/pom.xml
然后你必须跑 mvn versions:set -DnewVersion=1.0.2-SNAPSHOT
从 parent/
目录。
如果你喜欢我的项目,其子模块与父版本不匹配,另一个选择是调整它们以匹配第一个:
$ mvn versions:update-child-modules
那么版本:set(和版本:replace-snapshot等)现在可以按预期工作,而不需要更新版本的插件:)
$ mvn versions:set -DnewVersion=1.0.2-SNAPSHOT
也许是因为你没有在插件管理中的父pom中声明插件。如果要将插件传播给子节点,则必须在插件管理部分中声明。
或者你也可以使用 processAllModules 参数。
$ mvn versions:set -DnewVersion=2.0.0 -DprocessAllModules