【问题标题】:How do I get Artifactory to use the latest (instead of the oldest) Snapshot artifact?如何让 Artifactory 使用最新的(而不是最旧的)快照工件?
【发布时间】:2018-11-21 06:25:28
【问题描述】:

我正在使用 jennkins 管道、maven 和 artifactory 来构建产品 MyProduct。

插件 A 使用以下 Artifactory 快照存储库。

<distributionManagement>
    <snapshotRepository>
        <id>mvn</id>
        <url>https://bin.mydomain.ch/artifactory/myproduct-repo.mvn/</url>
        <uniqueVersion>false</uniqueVersion>
    </snapshotRepository>
</distributionManagement>

插件 A 构建没有问题,并且似乎上传到 Company Repo 和 MyProduct Repo。

在构建过程中的某个地方出了点问题,两个存储库未同步,Company Repo 中有一个额外的工件“*-110.jar & *.110.pm”。

Company Repo
Index of mvn/ch/sbb/myproduct/cloud/myproduct-common/2.2.2-SNAPSHOT

maven-metadata.xml                               21-Nov-2018 01:13  781 bytes
myproduct-common-2.2.2-20181116.162503-110.jar   16-Nov-2018 16:25  83.55 KB
myproduct-common-2.2.2-20181116.162503-110.pom   16-Nov-2018 16:25  2.97 KB
myproduct-common-2.2.2-20181120.235538-34.jar    20-Nov-2018 23:55  85.76 KB
myproduct-common-2.2.2-20181120.235538-34.pom    20-Nov-2018 23:55  3.44 KB
myproduct-common-2.2.2-20181121.002820-35.jar    21-Nov-2018 00:28  85.76 KB
myproduct-common-2.2.2-20181121.002820-35.pom    21-Nov-2018 00:28  3.44 KB
myproduct-common-2.2.2-20181121.011343-36.jar    21-Nov-2018 01:13  85.76 KB
myproduct-common-2.2.2-20181121.011343-36.pom    21-Nov-2018 01:13  3.44 KB

MyProduct Repo  
Index of myproduct-repo.mvn/ch/sbb/myproduct/cloud/myproduct-common/2.2.2-SNAPSHOT

maven-metadata.xml                              21-Nov-2018 01:13  781 bytes
myproduct-common-2.2.2-20181120.235538-34.jar   20-Nov-2018 23:55  85.76 KB
myproduct-common-2.2.2-20181120.235538-34.pom   20-Nov-2018 23:55  3.44 KB
myproduct-common-2.2.2-20181121.002820-35.jar   21-Nov-2018 00:28  85.76 KB
myproduct-common-2.2.2-20181121.002820-35.pom   21-Nov-2018 00:28  3.44 KB
myproduct-common-2.2.2-20181121.011343-36.jar   21-Nov-2018 01:13  85.76 KB
myproduct-common-2.2.2-20181121.011343-36.pom   21-Nov-2018 01:13  3.44 KB

当我构建插件 B 时,它会从 Company Repo 中获取依赖项,并且由于某些原因,它会获取最旧的 110 快照,并且出现编译错误。 Company Repo maven-metadata.xml 指向工件 110,而 maven-metadata.xml MyProduct Repo 指向工件 37(最新和最好的)。

我如何告诉插件 B 使用 MyProduct Repo,或者至少获取最新的 SNAPSHOT 工件?

是否有任何 jenkins 管道魔术可以用来模拟 false,换句话说,没有时间戳推送到存储库(并且还拉取它们)?

如何在 Company Repo 上重新创建 maven-metadata.xml?

【问题讨论】:

  • 在 Maven 中使用 -U 选项...
  • 很遗憾没有任何效果。

标签: maven jenkins-pipeline artifactory


【解决方案1】:

我如何告诉插件 B 使用 MyProduct Repo,或者至少获取最新的 SNAPSHOT 工件?

<distributionManagement>
    <snapshotRepository>
        <id>mvn</id>
        <url>https://bin.mydomain.ch/artifactory/myproduct-repo.mvn/</url>
        <uniqueVersion>false</uniqueVersion>
        <updatePolicy>always</updatePolicy>
    </snapshotRepository>
</distributionManagement>

添加updatePolicy 并将其值设置为“始终”。这将始终从指定的 URL 拉取最新版本的依赖项。

uniqueVersion 设置为 false 完全是另一个话题(违反 Semver)。

是否有任何 Jenkins 管道魔法可以用来模拟 false,换句话说,在没有时间戳的情况下推送到存储库(也可以拉取它们)?

我永远不会建议在 Artifactory 中取消时间戳。出于多种原因,该信息很有价值。我知道您只是在寻找解决问题的方法,但是通过删除时间戳,您实际上是在为开放性伤口贴上创可贴。

如何在 Company Repo 上重新创建 maven-metadata.xml?

不知道你在这里的意思。这是自动更新的。你不应该强迫 Maven 对这个文件做任何事情。

【讨论】:

  • 不是 的子元素吗?
  • 这里也可以使用。
猜你喜欢
  • 2013-07-10
  • 1970-01-01
  • 2013-07-29
  • 2015-02-14
  • 2018-05-31
  • 2020-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多