【问题标题】:Why can't Artifactory download requested artifact?为什么 Artifactory 不能下载请求的工件?
【发布时间】:2011-05-05 04:32:00
【问题描述】:

我们向 Artifactory 部署一个具有 [filename] 名称的工件,该名称由 Artifactory 应用到它的时间戳。稍后在不同的主干中,它的构建尝试使用与之前部署相同的名称下载该工件。但是,由于 Artifactory 应用于文件名的时间戳,此后续构建失败并出现“无法从任何存储库下载工件”错误。除了转Artifactory时间戳之外,有没有解决这个问题的方法?我们的信念是 Artifactory 会足够聪明,至少知道在请求时返回最新的时间戳工件。

【问题讨论】:

  • 它是SNAPSHOT 工件(即带有版本xxx-SNAPSHOT)吗?
  • 是的。这绝对是一个快照场景。在不同构建中运行的请求者下载器想要最新的快照,但由于不知道时间戳名称而无法获取。
  • 我对 maven 3 和 nexus 存储库有类似的问题。您设法解决了这个问题吗?

标签: maven maven-2 artifactory


【解决方案1】:

在我将存储库配置从存储非唯一快照更改为唯一快照后,我最近遇到了类似的问题。 (见here

当同一版本工件的唯一快照和非唯一快照同时存在时,下载将出现问题。

例如,在存储库中,如果文件夹/com/mycompany/test/foo/1.0.0-SNAPSHOT/ 下有foo-1.0.0-SNAPSHOT.pomfoo-1.0.0-20130329-231102-1.pom,则下载 com.mycompany.test:foo:1.0.0-SNAPSHOT:pom 会出错。您必须删除名称中带有 SNAPSHOT 的文件或名称中带有时间戳的所有文件。

就我而言,我的存储库从存储非唯一快照切换到唯一快照,因此我应该删除 *-SNAPSHOT 文件。我编写了一个 Ruby 脚本来扫描所有最近部署的工件,并尝试删除相同版本的非唯一快照 (-SNAPSHOT) 文件(如果有)。它使用 Artifactory 的 REST API。以下是来源:https://gist.github.com/aleung/5260512

【讨论】:

    【解决方案2】:

    通常这将是一个评论,但由于我缺乏对此的代表,我这样做作为答案: 当然,Artifactory 应该能够处理这个问题。为什么你认为时间戳是问题所在?这对于快照和 f.e. 来说是正常的。 maven-metadata.xml 应该指出哪个是最后一个版本。

    您对工件使用版本范围吗?

    它的构建尝试使用与之前部署相同的名称下载该工件。

    我说得对吗:您描述的要在其(自己的)构建中部署到 Artifactory 的工件想要使用自己?您能否发布您的 POM 的相关部分?

    【讨论】:

      猜你喜欢
      • 2019-02-07
      • 1970-01-01
      • 2016-05-11
      • 2012-04-12
      • 1970-01-01
      • 2016-02-06
      • 1970-01-01
      • 2021-12-06
      • 2013-01-18
      相关资源
      最近更新 更多