17

在终于厌倦了 maven 发布插件后,我决定转向更简单的东西。

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

当我做

mvn versions:set -DnewVersion=1.0.2-SNAPSHOT

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

我究竟做错了什么?我还需要设置另一个参数吗?

4

7 回答 7

18

我有引用外部父母的子模块的同样问题。

如果孩子的父母版本与父母的本地版本匹配,那么它会更新父母和孩子的版本(它可能会说跳过但仍然有效,奇怪的是)。如果它们不匹配,那么它似乎只更新父版本并更新子代以指向新的父代,它根本不会改变子代的版本。

最后我发现通配符可以解决这个问题(需要一个新版本的版本插件):

mvn org.codehaus.mojo:versions-maven-plugin:2.2:set -DnewVersion=1.5.0a   -DartifactId=*  -DgroupId=*
于 2015-08-06T17:26:48.420 回答
8

或者,您也可以使用processAllModules参数。

$ mvn versions:set -DnewVersion=2.0.0 -DprocessAllModules
于 2018-02-07T10:40:39.880 回答
3

如果您像我一样的项目的子模块与父模块的版本不匹配,另一种选择是先调整它们以匹配:

$ mvn versions:update-child-modules

然后版本:设置(和版本:替换快照等)现在将按预期工作,而不需要更新版本的插件:)

$ mvn versions:set -DnewVersion=1.0.2-SNAPSHOT
于 2017-05-11T19:56:11.057 回答
2

我假设你的项目结构是这样的:

parent/pom.xml
child/pom.xml

然后你必须mvn versions:set -DnewVersion=1.0.2-SNAPSHOTparent/目录运行。

于 2014-01-23T09:27:58.827 回答
0

可能是因为你没有在插件管理的父 pom 中声明插件。如果你想将插件传播给你必须在插件管理部分声明的孩子。

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

于 2013-02-27T10:56:51.517 回答
0

我最终运行 mvn -X 发现我的一个子 pom 以 UTF-8 BOM 编码保存:

[调试] 无法解析 child-project\pom.xml java.io.IOException:在 org.codehaus 中仅允许在开始标记之前使用空白内容,而不是 \uef(位置:START_DOCUMENT 看到 \uef...@1:1)。 mojo.versions.api.PomHelper.getRawModel (PomHelper.java:116)

异常在调试日志中“隐藏”。

我使用 UTF-8 编码重新保存它,它工作。

(遇到 Maven 3.5.4 / Versions-Maven-Plugin 2.7)

于 2020-08-19T16:31:08.540 回答
0

如果有人在寻找答案,下面的命令对我来说就像一个魅力

mvn release:update-versions -DdevelopmentVersion=4.4.0-SNAPSHOT
于 2020-04-18T21:24:02.410 回答