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

时间:2017-06-08 06:38:08

标签: maven jenkins

我的Jenkins奴隶上有一个.m2存储库,它每天都在增长,目前已接近~40 GB。

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

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

2 个答案:

答案 0 :(得分:2)

如果您不关心每个构建中是否都有外部依赖项,那么您可以在每个作业中使用私有Maven存储库(Maven - > Advanced - > Check'使用私有Maven存储库')并清理工作区开始你的构建。私有存储库在您的工作区中创建.repository,因此清理工作区将确保您从空存储库开始。

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

但是对共享的Maven存储库要谨慎!默认情况下,Maven不是线程安全的,因此下载相同工件的并发作业可能会使用不完整的下载。考虑使用Takari extensions使您的Maven存储库成为线程安全的。

答案 1 :(得分:1)

遇到类似问题后,我想出了一个解决方案,并将其作为开源,因为它可能会帮助其他人。该应用程序在Github上可用,它可以清理旧的依赖项并保留最新的。

https://github.com/techpavan/mvn-repo-cleaner

除了清除旧的依赖项之外,它还具有其他功能,例如基于下载日期/上次访问日期的基于日期的清理,删除快照,来源,javadocs ,忽略或强制执行删除特定组或工件。

此外,这是跨平台,可以在Windows和Unix / Linux环境中运行。