【发布时间】:2012-04-06 22:27:05
【问题描述】:
如果我正在在线工作并且我可以通过远程存储库访问所有需要的工件,那么在哪些情况下,rm -rf ~/.m2/repository 是安全的还是不安全的。
【问题讨论】:
标签: maven
如果我正在在线工作并且我可以通过远程存储库访问所有需要的工件,那么在哪些情况下,rm -rf ~/.m2/repository 是安全的还是不安全的。
【问题讨论】:
标签: maven
当您从远程存储库中检索所有依赖项时,本地存储库只不过是一个缓存。
与所有缓存一样,Maven 本地存储库有时会变得“脏”。在一个公认的偏执和矫枉过正的行为中,我安排了一个定期的 cron 作业来清除我的构建机器上的本地存储库。这会强制与我的 Nexus Maven 存储库重新同步。
【讨论】:
如果您可以通过远程存储库访问所有需要的工件,则删除本地 Maven 存储库始终是安全的。下一次构建所需的所有工件,包括基本的 Maven 插件(如编译器)基本上都将从远程存储库中获取。就是这样。
【讨论】:
因此,与其采用“蛮力”方式,不如采用不同的选择:
蛮力:
rm -rf ~/.m2/repository
这是执行此操作的“mvn”方式。
“一切:
mvn dependency:purge-local-repository
我认为有帮助的一些论点
mvn dependency:purge-local-repository -DactTransitively=false -DreResolve=false
这是我通常为我的本地机器做的事情:(我使用“groupid”的选项参数,它比大-锤子/蛮力.....
mvn dependency:purge-local-repository -DmanualInclude="my.group.id" -DsnapshotsOnly=true -DactTransitively=false -DreResolve=false
您可以在这里查看命令行选项:
https://maven.apache.org/plugins/maven-dependency-plugin/purge-local-repository-mojo.html
【讨论】:
您可以添加一个 cron 条目,以便在给定时间段内(例如 90 天)定期删除本地存储库中的文件。
find ~/.m2/ -type f -atime +90 -delete && \
find ~/.m2/ -type d -empty -delete
这会将您的缓存大小缩小到仅包含您最近使用的工件。
【讨论】: