首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何清除Apache Maven的缓存?

如何清除Apache Maven的缓存?
EN

Stack Overflow用户
提问于 2011-09-14 05:10:21
回答 4查看 392.3K关注 0票数 249

最近,Apache Maven似乎出现了缓存问题。使用Windows Vista或Windows7在我们的项目上执行干净安装有时会产生与先前构建相同的数据的工件,即使较新的工件的文件应该已经更新。

有没有办法清除这个缓存,以强制maven始终触发应该构建的本地工件的干净构建?

特别是,我们在构建一个带有war插件的we应用程序时遇到了问题。Maven版本是3.0.3。War插件版本是2.1.1。

EN

回答 4

Stack Overflow用户

发布于 2011-09-14 06:14:27

手动从c:\Users\<username>\.m2\repository中删除工件(或完整的本地存储库)。

票数 261
EN

Stack Overflow用户

发布于 2020-02-27 00:15:08

如果您将maven插件作为其中一个模块,请使用mvn dependency:purge-local-repository -DactTransitively=false -Dskip=true。否则,Maven将尝试重新编译它们,从而再次下载依赖项。

票数 5
EN

Stack Overflow用户

发布于 2020-03-13 23:57:26

我也遇到过同样的问题,我在shell中编写了一行代码来解决这个问题。

代码语言:javascript
复制
rm -rf $(mvn help:evaluate -Dexpression=settings.localRepository\
                       -Dorg.slf4j.simpleLogger.defaultLogLevel=WARN -B \
                       -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn | grep -vF '[INFO]')/*

我之所以这样做是因为我想让一个Jenkins项目在我需要的时候简单地运行它,这样我就不需要登录东西了,等等。如果你允许自己为它写一个shell脚本,你可以把它写得更干净:

代码语言:javascript
复制
#!/usr/bin/env bash
REPOSITORY=$(mvn help:evaluate \
  -Dexpression=settings.localRepository \
  -Dorg.slf4j.simpleLogger.defaultLogLevel=WARN \
  -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn \
  --batch-mode \
  | grep -vF '[INFO]')

rm -rf $REPOSITORY/*

应该可以工作,但我还没有测试所有的脚本。(我测试了第一个命令,但没有测试整个脚本。)这种方法的缺点是首先运行一个大而复杂的命令。它是幂等的,所以您可以自己测试它。删除是它自己的命令,这让你可以尝试它并检查它是否做了你认为它做的事情,因为你不应该在没有验证的情况下信任删除命令。然而,它是智能的,有一个很好的理由:它是可移植的。它会尊重您的settings.xml文件。如果您正在运行这个命令,并告诉maven使用特定的xml文件( -s或--settings参数),它仍然可以工作。因此,您不必费心确保所有东西在任何地方都是相同的。

这有点笨重,但这是一种很好的业务处理方式,IMO。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7408545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档