你如何清除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,请尝试使用依赖插件。
-
mvn dependency:purge-local-repository
:这是一个尝试删除本地存储库文件,但它总是去填满本地存储库后,已被删除。 -
mvn dependency:purge-local-repository -DreResolve=false
:这样可以避免重新parsing依赖关系,但似乎仍然有时会进入networking。 -
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
)。 对于那些有一些依赖关系混乱的项目,或者依赖于一些内部的仓库(这种情况发生),这样做有时是有用的。