Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
何时可以安全地删除本地Maven存储库?_Maven - Fatal编程技术网

何时可以安全地删除本地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个模块中有一个被设置为永不部署。感谢您的回答。这是我需要知道的!