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