簡體   English   中英

Maven 拉動 antlr jar 未顯示依賴關系:樹

[英]Maven pulls antlr jar which does not show in dependency:tree

我的 Maven / Java 項目中有多個版本的antlr ,我試圖了解項目的pom.xml中的哪個依賴項是哪個版本。

在 my.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

So, Maven finds version 2.7.7_5 (pulled by org.apache.directory.api:api-all ) and version 2.7.7 (pulled by org.hibernate:hibernate-agroal ) but no version 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 文件?

過去三個小時我一直在搜索文檔,但目前我不知道。

依賴項也可以來自插件,嘗試運行dependency:resolve-plugins來解析所有插件及其依賴項:

mvn dependency:resolve-plugins

除此之外,您可能可以做的另一件事是使用-X選項運行mvn進行調試。

兩種主要可能性:

  • 如果只有 POM 出現在.m2/repository中,那么這只是 Maven 的依賴解析過程的一部分。
  • if the POM and the JAR appear, and the JAR is not in the dependency tree, then it is likely that a maven plugin pulls the JAR into .m2/repository .

通常,如果您在本地存儲庫中發現意外的 JARs,則無需擔心。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM