Eclipse 中的 Maven 依赖项与 pom.xml 不匹配
Posted
技术标签:
【中文标题】Eclipse 中的 Maven 依赖项与 pom.xml 不匹配【英文标题】:maven dependencies in eclipse doesn't match pom.xml 【发布时间】:2022-01-20 01:13:39 【问题描述】:我在 pom.xml 文件中有以下依赖项:
<dependencies>
<dependency>
<groupId>com.pi4j</groupId>
<artifactId>pi4j-core</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>$org.slf4j-version</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>$org.slf4j-version</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>$org.slf4j-version</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>5.12.0</version>
</dependency>
</dependencies>
但是,当我查看 eclipse 中的 maven 依赖项时,我看到了这些:
那些额外的依赖是从哪里来的?它是作为我在 pom.xml 中定义的依赖项之一的一部分出现的吗?如果是这样,我如何找到 pom.xml 中的哪一个在拉它们?
【问题讨论】:
那些可能是传递依赖。运行mvn dependency:tree
以查看它们的确切来源。
非常感谢帮助。 [INFO] +- com.pi4j:pi4j-core:jar:1.4:compile [INFO] | \- javax.xml.bind:jaxb-api:jar:2.3.1:compile [INFO] | \- javax.activation:javax.activation-api:jar:1.2.0:compile [INFO] +- org.slf4j:slf4j-api:jar:1.6.6:compile [INFO] +- org.slf4j:jcl- over-slf4j:jar:1.6.6:runtime [INFO] +- org.slf4j:slf4j-log4j12:jar:1.6.6:runtime [INFO] | \- log4j:log4j:jar:1.2.17:runtime [INFO] \- com.rabbitmq:amqp-client:jar:5.12.0:compile
如果我只有应用程序,即可运行的 jar 文件,是否有任何其他方法可以找到临时依赖项(不认为这是可能的)?或者找出哪个 jar 依赖于哪个库/依赖项?
Eclipse Maven POM Editor 有标签 Dependencies Hierarchy (标签显示在 Maven POM Editor 的底部).
不,您不能从平面运行时类路径计算 Maven 依赖项,因为不同的 Maven 依赖项层次结构可能导致相同的类路径,不同的 Maven 依赖项可以引用相同的 JAR,可能具有不同的传递依赖项和不同的 Maven存储库可以包含不同的东西。此外,运行时类路径不会告诉任何有关测试范围依赖关系的信息。
【参考方案1】:
howlger 和 tgdavies 提到了什么。
这些可能是传递依赖。运行 mvn dependency:tree 以查看它们的确切来源。 – tgdavies
Eclipse Maven POM 编辑器为此提供了 Dependencies Hierarchy 选项卡(选项卡显示在 Maven POM 编辑器的底部)。 – 嚎叫 18 小时前
不,您不能从平面运行时类路径计算 Maven 依赖项,因为不同的 Maven 依赖项层次结构可能导致相同的类路径,不同的 Maven 依赖项可以引用相同的 JAR,可能具有不同的传递依赖项,并且不同的 Maven 存储库可以包含不同的东西.此外,运行时类路径不会告诉任何有关测试范围依赖性的信息。 – 嚎叫
【讨论】:
以上是关于Eclipse 中的 Maven 依赖项与 pom.xml 不匹配的主要内容,如果未能解决你的问题,请参考以下文章