Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven版本:集合不更新子模块_Maven - Fatal编程技术网

Maven版本:集合不更新子模块

Maven版本:集合不更新子模块,maven,Maven,在最终厌倦了maven发布插件之后,我欺骗了自己,转而使用更简单的插件 我有一个项目,有几个模块 当我这样做的时候 mvn versions:set -DnewVersion=1.0.2-SNAPSHOT 它只是更改父模块并跳过所有子模块 我做错了什么?我还需要设置另一个参数吗?可能是因为您没有在插件管理的父pom中声明插件。如果你想把插件传播给孩子们,你必须在插件管理部分声明 请参阅:我假设您的项目结构如下: parent/pom.xml child/pom.xml 然后您必须从paren

在最终厌倦了maven发布插件之后,我欺骗了自己,转而使用更简单的插件

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

当我这样做的时候

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