多个 jar 的本地 Maven 存储库问题

Posted

技术标签:

【中文标题】多个 jar 的本地 Maven 存储库问题【英文标题】:Local Maven Repository issue with multiple jars 【发布时间】:2021-11-21 14:24:27 【问题描述】:

我在 C:\Users\<User_Name>\.m2 目录中有本地 Maven 存储库。在收到“java.lang.NoSuchMethodError...”异常并在网络上导航问题后,我看到 this 页面提到要从本地存储库中删除未使用的 jar 版本。

我的问题是:

1. 当我查看C:\Users\<User_Name>\.m2\repository\org\mockito\mockito-core 文件夹时,有52 个不同版本的文件夹。我认为其他 jar 库也类似。那么,我们应该定期清理未使用的罐子吗?还是应该保留未使用的 jar 库版本?

2.如果我的pom.xml 中只有3.0.0 版本的mockito-core,应用程序如何在本地存储库中使用或混合其他版本?通常,如果我的pom.xml 中只有一个mockito-core 依赖项,是否会出现that 页面上提到的任何问题(在删除其他jar 版本后解决问题)?

【问题讨论】:

【参考方案1】:

1)

您不需要手动从本地 maven 存储库中“清理未使用的 jars”。你想如何决定哪个 jar,哪个版本未使用?也许您的下一个项目将使用您要删除的 jar。谁知道呢。

如果您有足够的磁盘空间,那么您可以将本地 maven 存储库目录保持多年不变。如果这个目录变得太大,那么我建议你删除完整的.m2 文件夹。那么下次你构建项目的时候,Maven会自动下载你项目需要的所有依赖。

删除本地 maven 存储库时只有一个用例会让人头疼:如果您手动安装了一些自定义 jar。

2)

您在本地 Maven 存储库目录中看到的不同依赖版本很可能来自您之前构建的不同项目。

无论如何,您可以使用Apache Maven Help Plugin 显示您的有效pon。

【讨论】:

非常感谢您的精彩解释。实际上,当磁盘空间不足时,我的方法与您提到的类似。据我所知,在删除 m2 文件夹并重建 maven 依赖项时,会再次下载所有必要的库。唯一的问题可能是手动安装的 jar,而不是 pom.xml。都是真的吗? 当有多个版本的jar(例如mockito-core jar)时,如果pom.xml中只有这个mockito-core的一个依赖,那么应用程序如何使用另一个版本的@987654326 @? 是的。因此,在删除本地 maven 存储库之前,请备份您使用 mvn install 手动安装的 JAR。 请每个主题问一件事。如果我的回答对您有所帮助,请接受它作为解决方案,并用您的新问题打开一个新主题。 两者都是相关问题,您的回答仍然没有完全帮助我。在标记为答案之前,您为什么要澄清第二点(“......当有多个版本的jar......”)?

以上是关于多个 jar 的本地 Maven 存储库问题的主要内容,如果未能解决你的问题,请参考以下文章

如何让 Grails 从 Maven 存储库中获取最新的本地 jars?

Maven:使用其ftp地址在本地存储库中安装jar

sh 将jar安装到本地maven存储库中。

构建多个 Maven 项目

有没有办法安装 jar 本地 gradle 存储库,就像它在 mave 中一样(maven install:install-file [duplicate]

一个 gradle 文件中的多个 maven 存储库