处理本地存储库中的旧快照的最佳方法?

use*_*914 12 build snapshot repository maven jenkins

我们有一个Nexus本地存储库管理器,它可以处理我们所有的内部项目(以及镜像外部存储库).对于我们的内部项目,我们只保留最新版本的快照构建.例如,如果我们有ProjectX 1.0,1.1和1.2-SNAPSHOT,一旦1.2发布,我们将删除1.2-SNAPSHOT,然后在我们的Nexus存储库中有1.0,1.1,1.2和1.3-SNAPSHOT.

问题是我们的Jenkins服务器在其本地.m2/repository文件夹中具有所有OLD快照,并继续针对这些旧快照成功构建项目,而实际上它们应该失败(我们的开发人员应该修复他们的POM文件.)

是否可以配置Maven(在settings.xml或pom.xml中)以删除Nexus存储库中不存在的这些不需要的快照?

如果没有,摆脱它们的最佳方法是什么?Jenkins配置,cron作业,其他选择?

谢谢...

Aar*_*lla 9

在 Linux 上,您可以使用以下命令:

find $HOME/.m2/repository/ \
   -name "*-SNAPSHOT" \
   -type d \
   -mtime +60 \
   -print \
   -prune \
   -exec rm -r "{}" \;
Run Code Online (Sandbox Code Playgroud)

解释:

  • 查找*-SNAPSHOT文件夹中命名的任何内容$HOME/.m2/repository/
  • 并且它必须是一个目录
  • 并且在过去 60 天内不得修改
  • 打印您发现的内容。如果你想测试命令,停在这里
  • -exec将文件夹删除,-prune告诉找到不尝试之后进入该文件夹。
  • -exec会删除该文件夹和文件中。


Mic*_*ael 0

我们在这里使用类似的设置。一旦工件被发布(对于某些存储库),我们会让 Nexus 自动删除快照。然后在我们的连续服务器上,我们只有一个 cron 作业,每天删除一次本地存储库文件夹。这对我们来说效果很好。