在最终厌倦了maven发布插件之后,我决定转向更简单的事情。
我有一个项目,有几个模块。
当我这样做时
mvn versions:set -DnewVersion=1.0.2-SNAPSHOT
它只是更改父级并跳过所有子级模块?
我做错了什么?我是否还需要设置其他参数?答案 0 :(得分:11)
我遇到了引用外部父母的子模块的相同问题。
如果孩子的父版本与父母的本地版本匹配,那么它会更新父母和孩子的版本(可能会说SKIPPED但仍然有效,奇怪)。如果它们不匹配,那么它似乎只更新父版本并更新子项以指向新父项,它根本不会更改子项的版本。
最后我发现通配符可以解决这个问题(需要一个新版本的版本插件):
mvn org.codehaus.mojo:versions-maven-plugin:2.2:set -DnewVersion=1.5.0a -DartifactId=* -DgroupId=*
答案 1 :(得分:3)
或者您也可以使用processAllModules参数。
strings %>%
strsplit(" ") %>%
unlist %>%
extract(1)
答案 2 :(得分:2)
如果您对我的子模块与父版本不匹配的项目感兴趣,则另一个选项是调整它们以匹配第一个:
$ mvn versions:update-child-modules
然后版本:set(和版本:replace-snapshot等)现在将按预期工作,而不需要更新版本的插件:)
$ mvn versions:set -DnewVersion=1.0.2-SNAPSHOT
答案 3 :(得分:1)
我假设你的项目结构是这样的:
parent/pom.xml
child/pom.xml
然后你必须从mvn versions:set -DnewVersion=1.0.2-SNAPSHOT
目录运行parent/
。
答案 4 :(得分:0)
也许是因为你没有在插件管理中的父pom中声明插件。如果要将插件传播给子节点,则必须在插件管理部分中声明。
答案 5 :(得分:0)
如果有人在寻找答案,下面的命令对我来说就像一个魅力
mvn release:update-versions -DdevelopmentVersion=4.4.0-SNAPSHOT
答案 6 :(得分:0)
我最终运行mvn -X来发现我的一个孩子poms被保存为UTF-8 BOM编码:
[DEBUG]无法解析child-project \ pom.xml java.io.IOException:在开始标记之前仅允许空白内容,而不是\ uef(位置:已看到START_DOCUMENT \ uef ... @ 1:1) 在org.codehaus.mojo.versions.api.PomHelper.getRawModel(PomHelper.java:116)
在调试日志记录中,该异常被“隐藏”。
我使用UTF-8编码重新保存了它,并且有效。
(遇到Maven 3.5.4 / Versions-Maven-Plugin 2.7)