何时可以安全地删除本地Maven存储库?
在什么情况下,如果我在线工作并且可以通过远程存储库访问所有需要的工件,何时可以安全地删除本地Maven存储库?,maven,Maven,在什么情况下,如果我在线工作并且可以通过远程存储库访问所有需要的工件,rm-rf~/.m2/存储库是安全的。如果您可以通过远程repo访问所有需要的工件,那么删除本地Maven存储库总是安全的。下一次构建所需的所有工件,甚至包括基本的Maven插件(如编译器),基本上都是从远程repos获取的。就是这样。当您从远程存储库检索所有依赖项时,本地repo只不过是一个缓存 与所有缓存一样,Maven本地回购偶尔也会变得“肮脏”。作为一种公认的偏执和过度行为,我安排了一个周期性的cron作业来清除构建机
rm-rf~/.m2/存储库
是安全的。如果您可以通过远程repo访问所有需要的工件,那么删除本地Maven存储库总是安全的。下一次构建所需的所有工件,甚至包括基本的Maven插件(如编译器),基本上都是从远程repos获取的。就是这样。当您从远程存储库检索所有依赖项时,本地repo只不过是一个缓存
与所有缓存一样,Maven本地回购偶尔也会变得“肮脏”。作为一种公认的偏执和过度行为,我安排了一个周期性的cron作业来清除构建机器上的本地存储库。这将强制与我的Nexus Maven存储库重新同步。您可以添加一个cron条目,以便在给定的时间段(例如90天)内定期删除本地存储库中的文件
find ~/.m2/ -type f -atime +90 -delete && \
find ~/.m2/ -type d -empty -delete
这将使您的缓存大小仅限于您最近使用的工件。因此,与“暴力”方式不同,有一个不同的选项:
暴力:
rm-rf~/.m2/存储库
下面是实现这一点的“mvn”方法
“一切:
mvn dependency:purge-local-repository
一些我认为有用的论点
mvn dependency:purge-local-repository -DactTransitively=false -DreResolve=false
以下是我通常为本地机器执行的操作:
mvn dependency:purge-local-repository -DmanualInclude="my.group.id" -DsnapshotsOnly=true -DactTransitively=false -DreResolve=false
您可以在此处研究命令行选项:
很好的解释,感谢您提供关于强制重新同步的额外提示。为什么不简单地使用mvn-U(更新)要强制检查更新?@imagineer确实如此,但缓存重置可确保生成完全干净。如果依赖项也在Maven respository中本地缓存,成本不会太高。在Linux上,除了Jenkins生成(building clean),我真的不需要清除本地repo。在windows上,当保留许多本地快照时,会出现时间延迟。因此windows例行清除很好。本地缓存应该始终是可消耗的。但是,我遇到过这样的情况,300个模块中有一个被设置为永不部署。感谢您的回答。这是我需要知道的!