我们向 Artifactory 部署一个具有 [filename] 名称的工件,该名称由 Artifactory 应用到它的时间戳。稍后在不同的主干中,它的构建尝试使用之前部署的相同名称下载该工件。但是,由于 Artifactory 应用于文件名的时间戳,此后续构建失败并出现“无法从任何存储库下载工件”错误。除了转Artifactory时间戳之外,有没有解决这个问题的方法?我们的信念是 Artifactory 会足够聪明,至少知道在请求时返回最新的时间戳工件。
2 回答
在我将存储库配置从存储非唯一快照更改为唯一快照后,我最近遇到了类似的问题。(见这里)
当同一版本的工件的唯一快照和非唯一快照同时存在时,下载它会出现问题。
例如,在存储库中,如果文件夹下/com/mycompany/test/foo/1.0.0-SNAPSHOT/
有foo-1.0.0-SNAPSHOT.pom
and foo-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
通常这将是一个评论,但由于我缺乏对此的代表,我这样做是为了回答:肯定 Artifactory 应该能够处理这个问题。为什么你认为时间戳是问题所在?这对于快照是正常的,并且 maven-metadata.xml 应该指出哪个是最后一个版本。
您是否使用工件的版本范围?
它的构建尝试使用与之前部署相同的名称下载该工件。
我说得对吗:您描述的要在其(自己的)构建中部署到 Artifactory 的工件想要使用自己?你能发布你的POM的相关部分吗?