你如何清除Apache Maven的caching?

最近,Apache Maven似乎有caching问题。 使用Windows Vista或Windows 7对我们的项目执行全新安装时,即使应该更新较新的工件文件,有时也会产生与以前的版本相同的工件。

有没有什么办法可以清除这个caching来迫使maven总是触发一个应该构build的本地构件的干净构build?

特别是,我们遇到的问题与战争插件构build一个Web应用程序。 Maven版本是3.0.3。 战争插件版本是2.1.1。

手动删除c:\Users\username\.m2\repository的工件(或完整本地回购)。

要清理本地caching,请尝试使用依赖插件。

  1. mvn dependency:purge-local-repository :这是一个尝试删除本地存储库文件,但它总是去填满本地存储库后,已被删除。
  2. mvn dependency:purge-local-repository -DreResolve=false :这样可以避免重新parsing依赖关系,但似乎仍然有时会进入networking。
  3. mvn dependency:purge-local-repository -DactTransitively=false -DreResolve=false :这是由PawełPrażak添加,似乎运作良好。 如果你想要本地回购清空,我会使用第三,如果你只是想抛出本地回购再次获得依赖关系。

您是否在settings.xml中检查/更改了存储库的updatePolicy settings.xml

此元素指定更新尝试发生的频率。 Maven会将本地POM的时间戳(存储在存储库的maven-metadata文件中)与远程进行比较。 选项是:始终,每天(默认),区间:X(其中X是以分钟为单位的整数)或从不。

尝试将其设置为always

这个工作在Spring Tool Suite v 3.1.0.RELEASE上,但是我猜也可以在Eclipse上使用它。

在/username/.m2目录中手动删除工件(如上面palacsint所述)后,通过执行以下操作重新索引文件:

转到Windows->首选项 – > Maven->用户设置菜单。

点击“Local Repository”文本框旁边的“Reindex”button。 点击“应用”,然后“确定”,你就完成了。

我会做以下几点:

 mvn dependency:purge-local-repository -DactTransitively=false -DreResolve=false --fail-at-end 

这些标志告诉maven不要试图解决依赖关系或打networking。 删除你在本地看到的内容。

并且为了好的措施,直到--fail-at-end忽略错误( --fail-at-end )。 对于那些有一些依赖关系混乱的项目,或者依赖于一些内部的仓库(这种情况发生),这样做有时是有用的。