0

嗨 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 或当前版本更改为可用的最新版本的方法。难道我做错了什么?我无法弄清楚。

4

1 回答 1

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

然后您可以开始使用更多的目标选项来调整选项。例如,您可能:

  • 允许使用-DallowSnapshots=true.

  • 禁止使用-DallowMajorUpdates=false. 请注意,围绕这些版本号部分的逻辑在插件中似乎有点不稳定——或者不是我所期望的。

  • 避免使用-DgenerateBackupPoms=false. 这更简洁,但如果您省略此选项,您可以使用mvn versions:revert它让自己回到开始的位置。

要将其应用于您的场景,我认为您需要:

  • 检查您的实际命令中是否有拼写错误(就像您在问题和评论中一样)。

  • 去掉那些没有出现在 options 中的选项

  • 可能,不要尝试将它与其他任何东西一起运行(除非它是自动化的),从而保持简单,所以去掉clean package命令末尾的 。

于 2020-01-30T22:03:49.327 回答