如何从 maven 存储库中清除旧的依赖项?

我在.m2文件夹中有太多的文件,其中maven存储下载的依赖项。有没有办法清除所有旧的依赖项?例如,如果存在具有 3 个不同版本的依赖项:1、2 和 3,则在清理后必须只有第 3 个。如何对 .m2 文件夹中的所有依赖项执行此操作?


答案 1

如果你在Unix上,你可以使用其中文件的访问时间。只需为您的文件系统启用访问时间,然后运行您想要保留依赖项的所有项目的干净构建,然后执行如下操作(未测试!

find ~/.m2 -amin +5 -iname '*.pom' | while read pom; do parent=`dirname "$pom"`; rm -Rf "$parent"; done

这将找到上次访问超过5分钟前的所有*.pom文件(假设您最多在5分钟前开始构建)并删除其目录。

在 rm 之前添加“echo”以执行“试运行”。


答案 2

简短答案 - 已删除 中的 .m2 文件夹。例如,在Windows 10中,用户主页是。使用 重新生成项目。只有那些依赖项将保留,这是项目所需的。{user.home}C:\Users\user1mvn clean package

长答案 - .m2文件夹就像普通文件夹一样,文件夹的内容是从不同的项目构建的。我认为没有办法自动找出哪个库是“旧的”。其实老是一个模糊的词。在项目中使用以前版本的库时,可能有很多原因,因此无法确定哪一个未使用。

您所能做的就是删除 .m2 文件夹并重新生成所有项目,然后该文件夹将自动生成所有必需的库。

如果您只关心在所有项目中要使用的库的特定版本;重要的是,项目的pom也应该更新到最新版本。也就是说,如果不同的POM引用库的不同版本,则所有POM都将在.m2中下载。


推荐