如何在使用mvn版本时强制使用任意父版本:update-parent?

时间:2018-04-27 11:31:27

标签: maven maven-3

(改写问题以便更好地理解) 要详细说明我的问题,这个问题不够详细,以下是我遇到的情况: 项目:A和B. A的根pom是项目B的父项。

由于我们的发布过程存在一些限制(这是为了给出一些当前的上下文,但这不应被视为绕过手头问题的主要驱动因素),我需要更改两个项目的版本。

如果我更改A的版本,然后更改B的版本,我收到以下错误消息:

mvn versions:update-parent -DallowSnapshots -DgenerateBackupPoms=false -DparentVersion="6.4.1-SNAPSHOT" 
[WARNING] Not updating version: could not resolve any versions

如果我更改了A的版本,请在A上调用mvn clean install(我可以使用它,尽管我希望能够在脚本中同时更改所有项目的版本和父版本,而不是中间,可能失败,构建),然后B上面的命令工作,但只有当指定的父版本是最新的可用时。否则我得到:

[INFO] Current version of parentGroup:parentArtifact:pom:7.0.12 is the latest.

这意味着我无法使用mvn versions:update-parent命令更改维护分支上的父版本。

有没有办法让mvn versions:update-parent尊重所需的父版本? (无论是否可以在本地,nexus存储库中找到它,或者根本不存在)

编辑:-X的其他信息(删除不相关的部分,强调我的)

[DEBUG] Configuring mojo 'org.codehaus.mojo:versions-maven-plugin:2.5:update-parent' with basic configurator -->
[DEBUG]   (f) allowSnapshots = true
[DEBUG]   (f) generateBackupPoms = false
(...)
[DEBUG]   (f) parentVersion = 7.0.11
[DEBUG] Determining update check for artifact groupId:artifactIdProjectA (C:\Users\donckels\.m2\repository\.......\artifactIdProjectA\maven-metadata-....-repository.xml) from ....-repository (http://..../nexus/content/groups/public)
(....)
[DEBUG] Searching for ....-repository.maven-metadata-....-repository.xml.lastUpdated in resolution tracking file.
[DEBUG] Reading resolution-state from: C:\Users\donckels\.m2\repository\.....\artifactIdProjectA\resolver-status.properties
(....)
[DEBUG] Proposal is to update from 7.0.12 to 7.0.12
[INFO] Current version of groupId:artifactIdProjectA:pom:7.0.12 is the latest.

即使我指定了7.0.11,它也会以:

结束
[DEBUG] Proposal is to update from 7.0.12 to 7.0.12

1 个答案:

答案 0 :(得分:0)

  

因为我想使用的版本是本地构建的版本

然后构建父项的步骤不应该只是mvn clean build,而是mvn clean install:这会将工件缓存在Jenkins代理本地maven缓存中。

  

将在稍后构建的版本

然后,您的工作应该有一个初步步骤,在当前步骤调用mvn versions:update-parent之前构建并安装新的父版本

尽管OP评论:

  

绊倒点是版本周围的一组方括号,除了"之前构建的"要求。
  没有这些方括号,如果版本不是最新版本,则会忽略该版本。

请参阅" Version Range Specification"

[1.0]   x == 1.0