版本-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内核版本分别带表啥含义?

使用低版本vs软件打开高版本vs工程

CUDA版本与GPU驱动版本问题

gcc 低版本换高版本

App版本号定义与说明基础知识

Linux 内核编译 Linux 内核 ① ( 下载指定版本的 Linux 内核源码 | Linux 内核版本号含义 | 主版本号 | 次版本号 | 小版本号 | 稳定版本 )