我的Maven / Java项目中有多个版本的antlr,我正在尝试了解项目的pom.xml中的哪个依赖项拉出了哪个版本。
在我的.m2目录下,我看到了三个不同的antlr版本:
~/.m2/repository/antlr/antlr/2.7.2/antlr-2.7.2.jar
~/.m2/repository/antlr/antlr/2.7.7/antlr-2.7.7.jar
~/.m2/repository/.../org.apache.servicemix.bundles.antlr-2.7.7_5.jar如果我运行
$ mvn dependency:tree从项目的根目录中,我得到:
[INFO] +- org.apache.directory.api:api-all:jar:2.0.0.AM2:compile
[INFO] | +- ...:org.apache.servicemix.bundles.antlr:jar:2.7.7_5:compile
...
[INFO] +- org.hibernate:hibernate-agroal:pom:5.3.7.Final:compile
[INFO] | +- io.agroal:agroal-pool:jar:0.4:compile
[INFO] | +- org.hibernate:hibernate-core:jar:5.3.7.Final:compile
...
[INFO] | | +- antlr:antlr:jar:2.7.7:compile因此,Maven找到版本2.7.7_5 (由org.apache.directory.api:api-all拉取)和版本2.7.7 (由org.hibernate:hibernate-agroal拉取),但找不到版本2.7.2。此版本不会直接列在项目pom.xml中。
我删除了文件夹.m2/repository/antlr/antlr/2.7.2并运行
$ mvn compile从项目的根文件夹。它立即再次下载了2.7.2版本:
[INFO] Scanning for projects...
...
Downloading from central: https://repo.maven.apache.org/maven2/antlr/antlr/2.7.2/antlr-2.7.2.pom
Downloaded from central: https://repo.maven.apache.org/maven2/antlr/antlr/2.7.2/antlr-2.7.2.pom (145 B at 331 B/s)同样,mvn dependency:tree没有显示关于版本2.7.2的任何内容。这怎么可能呢?为什么mvn拉取的JAR版本不会显示在项目的依赖项中?如何找出pom.xml文件中的哪个依赖项拉动了这个JAR文件?
在过去的三个小时里,我一直在搜索文档,但目前我没有任何线索。
发布于 2021-03-15 19:11:22
依赖关系也可以来自插件,尝试运行dependency:resolve-plugins来解析所有插件及其依赖关系:
mvn dependency:resolve-plugins除此之外,您可以做的另一件事是使用-X选项运行mvn进行调试。
发布于 2021-03-15 19:12:14
主要有两种可能性:
.m2/repository中只出现了POM,则这只是maven的依赖项解析过程的一部分。通常,如果您在本地存储库中发现意外的JAR,没有什么可担心的。
https://stackoverflow.com/questions/66636808
复制相似问题