我在我的Jenkins slave上有一个.m2存储库,它每天都在增长,目前它几乎是40 GB。
由于我有多个作业在运行并从.m2中挑选依赖项,所以我不能删除所有内容,但我可以看到在每个.m2代码库中都有一个旧的和无用的人工制品版本。
在maven中有没有什么方法可以让当一个任务触发$mvn安装时,maven只会在.m2仓库中为.m2中的每个仓库保留最新的版本(例如,版本控制x.y.z.w,这是增量的)?
发布于 2017-06-08 17:13:00
如果您不关心在每次构建中都拉入外部依赖项,那么您可以为每个作业使用一个私有的->存储库(Maven高级->检查“使用私有Maven”),并在构建开始时清理工作区。私有存储库在您的工作区中创建一个.repository,因此清理您的工作区将确保您从一个空的存储库开始。
如果您有许多共享的外部依赖项,那么您可能会使用更多的磁盘空间,因为它们会多次出现在不同的存储库中。在这种情况下,您可以编写一个脚本,定期(使用cron之类的任务调度程序)从共享存储库中删除未使用的文件,例如,请参阅this Stack Overflow answer。
但是,使用共享Maven存储库时要小心!默认情况下,Maven不是threadsafe,因此下载相同工件的并发作业可能会使用不完整的下载。考虑使用Takari extensions来确保Maven存储库的线程安全。
发布于 2018-02-17 22:41:38
在经历过类似的问题后,我想出了一个解决方案,并将其开源,因为它可能会对其他人有所帮助。该应用程序在Github上可用,它可以清理旧的依赖项并只保留最新的依赖项。
https://github.com/techpavan/mvn-repo-cleaner
除了清理旧的依赖项外,它还具有其他功能,如基于下载日期/上次访问日期的日期清理,删除快照,源,javadoc,忽略或强制删除特定的组或工件。
此外,这是跨平台,可以在Windows和Unix / Linux环境中运行。
https://stackoverflow.com/questions/44428362
复制相似问题