我正在使用Artifactory来支持企业多模块项目。通常,我们更改模块的名称,并且不更新POM文件中的相关依赖项以使用新模块名称。由于SNAPSHOT依赖关系不会定期自动清理,因此这些旧的模块引用可以在那里停留数月。当我将Artifactory迁移到另一台服务器并且旧的模块依赖项导致构建错误时,我发现了一些。我每晚使用Jenkins构建这些SNAPSHOT工件,所以我想要一些方法来自动清理SNAPSHOT工件。
Artifactory(或其他工件服务器,如Nexus)是否支持一个概念,如果SNAPSHOT工件早于X天,工件将被删除?有没有其他方法可以自动化工件服务器清理来完成我想要做的事情?我唯一能想到的是创建一个cron作业,以便在每晚构建开始之前定期清除libs-snapshot-local。有人已经建立了这种能力吗?
答案 0 :(得分:2)
据我所知,Artifactory没有自动删除早于某个值的模块的方法。在我的商店,我们编写了一个Groovy客户端,使用Artifactory's REST API完成此操作。
请注意,如果您的工件是共享库,则在删除它们之前,需要注意不要依赖它们。我们的脚本也考虑到了这一点。
如果您对跟进感兴趣,请发表评论,我会看看是否可以与您分享我们的剧本。
答案 1 :(得分:2)
另一个解决方案可能是user plugin。您可以按计划编写一个简单的Groovy脚本,该脚本将在Artifactory本身中运行(与REST Gareth建议的远程调用相反),searching for artifacts not downloaded for a long time和deleting them。
答案 2 :(得分:2)
我已经制作了一个Ruby脚本来删除X天未下载的工件。它的工作方式就像JBaruch在答案中提到的那样。
它不是插件。它适用于Artifactory Open Source。只有Artifactory Pro支持插件。