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 不匹配的主要内容,如果未能解决你的问题,请参考以下文章

Maven添加坐标(依赖)及在Eclipse中的操作

导入到 Eclipse 后,Maven 项目中的 pom 文件出错

eclipse导出maven依赖的jar包

pom.xml 中的 JDBC Maven 依赖关系

eclipse maven 导出项目依赖的jar包

eclipse maven 导出项目依赖的jar包