Maven版本:set不更新子模块

时间:2013-01-26 12:31:13

标签: maven

在最终厌倦了maven发布插件之后,我决定转向更简单的事情。

我有一个项目,有几个模块。

当我这样做时

mvn versions:set -DnewVersion=1.0.2-SNAPSHOT

它只是更改父级并跳过所有子级模块?

我做错了什么?我是否还需要设置其他参数?

7 个答案:

答案 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中声明插件。如果要将插件传播给子节点,则必须在插件管理部分中声明。

请参阅:http://maven.apache.org/pom.html#Plugin_Management

答案 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)