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

标签 maven build repository jenkins snapshot

我们有一个 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 文件夹中拥有所有旧快照,并继续针对这些旧快照成功构建项目,而实际上它们应该失败(我们的开发人员应该修复他们的 POM文件。)

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

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

谢谢...

最佳答案

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

find $HOME/.m2/repository/ \
   -name "*-SNAPSHOT" \
   -type d \
   -mtime +60 \
   -print \
   -prune \
   -exec rm -r "{}" \;

解释:

  • 在文件夹 $HOME/.m2/repository/
  • 中找到任何名为 *-SNAPSHOT 的内容
  • 它必须是一个目录
  • 并且在过去 60 天内不得修改
  • 打印您找到的内容。如果您想测试命令,请在此处停止
  • -exec会删除文件夹,-prune告诉find以后不要再尝试进入文件夹了。
  • -exec会删除里面的文件夹和文件。

关于maven - 处理本地存储库中旧快照的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9729076/

相关文章:

android - 失败 : setup-jack-server when building LineageOS

ios - 错误命名应用程序的内部版本号

java - Gradle依赖项不起作用(无法导入)

svn - SVN 存储库如何损坏?

maven 3 站点部署卡在 Jenkins 构建中的身份验证提示中

maven - com.sun.javafx.fxml.FXMLLoaderHelper 类无法访问 com.sun.javafx.util.Utils 类

java - 在 IntelliJ 中编译 Maven 项目时出现 UnsupportedOperationException

ios - 确定 cordova iOS 构建失败的原因

java - 已正确部署 REST 服务并正确配置 tomcat 管理器,但访问该服务会抛出 404

git - 如何使用android studio更改git存储库