清理并维护.m2中的本地maven缓存工件

dkm*_*ven 5 maven jenkins

我的Jenkins奴隶上有一个.m2存储库,它每天都在增长,目前它几乎是~40 GB.

由于我有多个作业正在运行并从.m2中选择依赖项我无法删除所有内容,但我可以在.m2的每个回购中看到有一个较旧且无用的版本.

在maven中是否有任何可用的方法,以便当一个作业触发$ mvn install maven时,只保留.m2中的每个repo的.m2 repo(示例版本为xyzw,即增量版)中的最新版本?

Joe*_*ers 3

如果您不关心每个构建中都会引入外部依赖项,则可以为每个作业使用私有 Maven 存储库(Maven -> 高级 -> 检查“使用私有 Maven 存储库”),并在构建开始时清理工作区。私有存储库会.repository在您的工作区中创建一个,因此清理您的工作区将确保您从一个空的存储库开始。

如果您有许多共享的外部依赖项,那么您可能会使用更多的磁盘空间,因为它们多次出现在不同的存储库中。在这种情况下,您可以编写一个脚本,定期(使用类似任务调度程序cron)从共享存储库中删除未使用的文件,例如,请参阅此 Stack Overflow 答案

但是要小心共享 Maven 存储库!默认情况下,Maven 不是线程安全的,因此下载同一工件的并发作业可能会使用不完整的下载。考虑使用Takari 扩展来使您的 Maven 存储库线程安全。