版本-maven-plugin:update-property 不更新 pom.xml
Posted
技术标签:
【中文标题】版本-maven-plugin:update-property 不更新 pom.xml【英文标题】:versions-maven-plugin:update-property not updating pom.xml 【发布时间】:2020-05-15 13:36:15 【问题描述】:嗨 Meier,我使用了以下目标:
mvn versions:update-property
-Dproperty="emom.web.dependency.shr.version"
-Dincludes:org.safeway.com:emom-shr
-DgenerateBackupPoms=false
-DallowIncrementalVersios=true
-DallowSnapshots=true
clean package
我的工作 B pom.xml 是:
<dependency>
<groupId>com.safeway.app</groupId>
<artifactId>emom-shr</artifactId>
<version>$emom.web.dependency.shr.version</version>
</dependency>
在属性下它具有硬编码的版本:
<emom.web.dependency.shr.version>19.6.5-SNAPSHOT</emom.web.dependency.shr.version>
我的工作一个 pom.xml:
<groupId>com.safeway.app</groupId>
<artifactId>emom-shr</artifactId>
<version>20.1.0-SNAPSHOT</version>
<packaging>jar</packaging>
当我运行上述目标时,Maven 正在从 Artifactory 中选择最新版本(即 20.1.0),但是当我在属性下检查 Job B 的 pom.xml 时,它仍然显示 19.6.5。我需要一种将 19.6.5 或当前版本更改为可用的最新版本的方法。难道我做错了什么?我想不通。
【问题讨论】:
“Dproperty=emom.web.dependency.shr.version”没有前导连字符“-D”是错字吗? 你好 Ben,我的错,实际上是 mvn 版本:update-property -Dproperty="emom.web.dependency.shr.version" -Dincludes:org.safeway.com:emom-shr - DgenerateBackupPoms=false -DallowIncrementalVersios=true -DallowSnapshots=true clean package' 我正在使用这样的目标 嗯,好的,-DallowIncrementalVersios=true,你的意思是-DallowIncrementalUpdates=true吗? 是的本,不确定我是否没有遵循正确的流程 【参考方案1】:这是versions-maven-plugin:update-property
在实践中工作的示例。我以通用 Mockito 库为例,它在 Maven Central 中适用于所有人。
从这个 POM 开始(注意 mockito-version
属性):
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>abc</groupId>
<artifactId>def</artifactId>
<version>0.0.1-SNAPSHOT</version>
<properties>
<mockito-version>2.22.0</mockito-version>
</properties>
<dependencies>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>$mockito-version</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
将其升级到最新版本的最简单方法是:
mvn versions:update-property -Dproperty=mockito-version
在您的情况下将mockito-version
替换为emom.web.dependency.shr.version
。
然后您可以开始使用更多的goal options 来调整选项。例如,您可以:
使用-DallowSnapshots=true
允许快照,而不仅仅是发布。
禁止使用-DallowMajorUpdates=false
进行主要版本更新(即右起第三个元素)。请注意,围绕这些版本号部分的逻辑在插件中似乎有点不稳定 - 或者不是我所期望的。
避免使用-DgenerateBackupPoms=false
创建备份 POM。这样更简洁,但如果您省略此选项,则可以使用 mvn versions:revert
让自己回到开始的位置。
要将其应用于您的场景,我认为您需要:
检查您的实际命令中是否有拼写错误(就像您在问题和 cmets 中一样)。
去掉options中没有出现的选项。
可能,不要尝试将它与其他任何东西一起运行(除非它是自动化的)来保持简单,因此请去掉命令末尾的 clean package
。
【讨论】:
谢谢 Ben,现在我可以看到我的 pom 文件已更新为最新版本,我的目标有一个错字,我很愚蠢应该早点意识到。 很高兴听到你到达那里。如果您对我的回答解决了您的问题感到满意,请在左侧打勾/打勾,以便将来的用户知道它有效。以上是关于版本-maven-plugin:update-property 不更新 pom.xml的主要内容,如果未能解决你的问题,请参考以下文章
Linux 内核编译 Linux 内核 ① ( 下载指定版本的 Linux 内核源码 | Linux 内核版本号含义 | 主版本号 | 次版本号 | 小版本号 | 稳定版本 )