Maven版本:集合不更新子模块
在最终厌倦了maven发布插件之后,我欺骗了自己,转而使用更简单的插件 我有一个项目,有几个模块 当我这样做的时候Maven版本:集合不更新子模块,maven,Maven,在最终厌倦了maven发布插件之后,我欺骗了自己,转而使用更简单的插件 我有一个项目,有几个模块 当我这样做的时候 mvn versions:set -DnewVersion=1.0.2-SNAPSHOT 它只是更改父模块并跳过所有子模块 我做错了什么?我还需要设置另一个参数吗?可能是因为您没有在插件管理的父pom中声明插件。如果你想把插件传播给孩子们,你必须在插件管理部分声明 请参阅:我假设您的项目结构如下: parent/pom.xml child/pom.xml 然后您必须从paren
mvn versions:set -DnewVersion=1.0.2-SNAPSHOT
它只是更改父模块并跳过所有子模块
我做错了什么?我还需要设置另一个参数吗?可能是因为您没有在插件管理的父pom中声明插件。如果你想把插件传播给孩子们,你必须在插件管理部分声明
请参阅:我假设您的项目结构如下:
parent/pom.xml
child/pom.xml
然后您必须从
parent/
目录运行mvn版本:set-DnewVersion=1.0.2-SNAPSHOT
。我遇到了子模块引用外部父模块的相同问题
如果子级的父级版本与父级的本地版本匹配,则会更新父级和子级的版本(可能会说跳过了,但奇怪的是仍然有效)。如果它们不匹配,那么它似乎只更新父版本并更新子版本以指向新的父版本,而根本不会更改子版本
最后我发现通配符可以解决这个问题(需要新版本的版本插件):
如果您和我一样有一个项目,其子模块与父模块的版本不匹配,另一个选项是首先调整它们以匹配:
$ mvn versions:update-child-modules
那么versions:set(以及versions:replace snapshot等)现在将按预期工作,而不需要更新版本的插件:)
或者,也可以使用该参数
$ mvn versions:set -DnewVersion=2.0.0 -DprocessAllModules
如果有人在寻找答案,下面的命令对我来说就像一个符咒
mvn release:update-versions -DdevelopmentVersion=4.4.0-SNAPSHOT
我最终运行了mvn-X,发现我的一个孩子POM是以UTF-8 BOM编码保存的: [DEBUG]无法分析子项目\pom.xml java.io.IOException:仅允许在开始标记之前使用空格内容,而不允许\uef(位置:start\u DOCUMENT seen\uef…@1:1) 位于org.codehaus.mojo.versions.api.PomHelper.getRawModel(PomHelper.java:116) 调试日志记录中“隐藏”了异常 我用UTF-8编码重新保存了它,它成功了
(遇到Maven 3.5.4/Versions Maven Plugin 2.7)你能发布pom.xml吗?试一试
mvn版本:更新子模块
父pom和子模块正在使用标记,每个都指向不同的父模块以继承一些代码生成,等等。我将发布修改后的pom.xml,因为我无法发布acutal。可能是父标记导致了这种行为吗?我尝试了“mvn版本:更新子模块”,它跳过子模块,并说它们是最新的。当子模块有父模块而不是基本模块时,我经历了这种行为。其他以基本模块为父模块的子模块正在更新,没有任何问题。棘手的是,我还有一个主pom.xml(其打包为“pom”)来定义子模块。在本例中,您仍然是正确的,正如您所提到的,我必须以“parent/pom.xml”为目标。另外,FWIW不是从parent/
执行,而是可以添加参数-f parent/pom.xml
,这个通配符解决了我的多模块问题,其中根POM中声明的一个模块被定义为独立模块,其POM不引用任何父POM,而只包含其子模块,也可以是独立模块,也可以是引用父POM。在尝试了其他一些建议之后,我花了一段时间才找到这个答案!这个答案值得更多的投票。发生的情况是maven插件将工件id默认为当前聚合器的工件id。导致聚合器子模块未更新。谢谢你的提示!
$ mvn versions:set -DnewVersion=2.0.0 -DprocessAllModules
mvn release:update-versions -DdevelopmentVersion=4.4.0-SNAPSHOT