it-swarm.cn

你如何清除Apache Maven的缓存?

最近,Apache Maven似乎有缓存问题。使用Windows Vista或Windows 7在我们的项目上执行全新安装有时会生成与先前版本具有相同数据的工件,即使新工件的文件应该已更新。

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

特别是,我们在使用war插件构建webapp时遇到了问题。 Maven版本是3.0.3。战争插件版本是2.1.1。

172
MetroidFan2002

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

183
palacsint

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

  1. mvn dependency:purge-local-repository:这是尝试删除本地存储库文件,但它总是在删除后删除本地存储库。
  2. mvn dependency:purge-local-repository -DreResolve=false:这可以避免重新解析依赖关系,但有时似乎仍然会进入网络。
  3. mvn dependency:purge-local-repository -DactTransitively=false -DreResolve=false:这是由PawełPrażak添加的,似乎效果很好。如果你想要本地repo清空,我会使用第三个,如果你只想丢弃本地repo并再次获取依赖项,我会使用第一个。
151
Brian C.

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

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

尝试将其设置为always

12
FrVaBe

我会做以下事情:

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

标志告诉maven不要尝试解析依赖关系或点击网络。 删除您在本地看到的内容。

为了更好的衡量,忽略错误(--fail-at-end)直到最后。这有时对于那些具有一些混乱的依赖关系或依赖于有点混乱的内部存储库的项目很有用(它会发生)。

7
luis.espinal

这适用于Spring Tool Suite v 3.1.0.RELEASE,但我猜它也可以在Eclipse上使用。

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

转到Windows-> Preferences-> Maven-> User Settings菜单。

单击“本地存储库”文本框旁边的“重新索引”按钮。单击“应用”,然后单击“确定”,即可完成。

6
Felby

正如一些答案所指出的那样,有时你真的想要 删除 完全本地存储库,例如,可能存在一些无法清除的工件,因为它们不再被pom引用。

如果您希望将此删除嵌入maven阶段,例如clean,您可以使用maven-clean-plugin并通过设置访问存储库,例如:

 <plugin>
    <inherited>false</inherited>
    <groupId>org.Apache.maven.plugins</groupId>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.1</version>
    <executions>
        <execution>
            <phase>clean</phase>
            <goals>
                <goal>run</goal>
            </goals>
            <configuration>
                <tasks>
                    <echo>Base clean is attached to deleting local maven cache</echo>
                    <echo>${settings.localRepository}</echo>
                </tasks>
            </configuration>
        </execution>
    </executions>
</plugin>

<plugin>
    <inherited>false</inherited>
    <artifactId>maven-clean-plugin</artifactId>
    <version>3.1.0</version>
    <configuration>
        <filesets>
            <fileset>
                <directory>${settings.localRepository}</directory>
            </fileset>
        </filesets>
    </configuration>
</plugin>
2
Maximilian Schulz