【问题标题】:Maven dependency tree different from M2E's Dependency HierarchyMaven 依赖树不同于 M2E 的依赖层次结构
【发布时间】:2012-08-11 18:17:16
【问题描述】:

我正在构建一个 Java 项目 MaterialsDep,它是项目 craftbukkit 的一个插件 [加载到我的工作区中,并且直接依赖于 jar 类型的 MaterialsDep 和范围编译]。在 Eclipse 中查看 MaterialsDep 的 pom 依赖层次结构,CB 所需的所有 jar 都显示为已解析并正确列出。但是在项目 AP 上运行 mvn dependency:copy-dependencies 只会复制直接依赖项,没有其他任何内容。

运行依赖:树显示:

[INFO] --- maven-dependency-plugin:2.4:tree (default-cli) @ MaterialsDep ---
[INFO] MaterialsDep:MaterialsDep:jar:0.0.1-SNAPSHOT
[INFO] +- org.bukkit:craftbukkit:jar:1.3.1-R1.1-SNAPSHOT:compile
[INFO] +- org.pircbotx:pircbotx:jar:1.7:compile
[INFO] \- org.bukkit:bukkit:jar:1.3.1-R1.1-SNAPSHOT:compile

哪些是直接依赖项。

我应该如何确保craftbukkit的依赖被识别和复制?

[编辑]

dependency:tree为craftbukkit:

[INFO] org.bukkit:craftbukkit:jar:1.3.1-R1.1-SNAPSHOT
[INFO] +- org.bukkit:bukkit:jar:1.3.1-R1.1-SNAPSHOT:compile
[INFO] +- org.bukkit:minecraft-server:jar:1.3.1:compile
[INFO] +- net.sf.jopt-simple:jopt-simple:jar:3.2:compile
[INFO] +- jline:jline:jar:2.6:compile
[INFO] +- org.fusesource.jansi:jansi:jar:1.8:compile
[INFO] +- org.xerial:sqlite-jdbc:jar:3.7.2:compile
[INFO] +- mysql:mysql-connector-java:jar:5.1.14:compile
[INFO] +- org.avaje:ebean:jar:2.7.3:provided
[INFO] |  \- javax.persistence:persistence-api:jar:1.0:provided
[INFO] +- org.yaml:snakeyaml:jar:1.9:provided
[INFO] +- com.google.guava:guava:jar:10.0:provided
[INFO] |  \- com.google.code.findbugs:jsr305:jar:1.3.9:provided
[INFO] +- commons-lang:commons-lang:jar:2.3:provided
[INFO] +- junit:junit-dep:jar:4.10:test
[INFO] +- org.hamcrest:hamcrest-library:jar:1.2.1:test
[INFO] |  \- org.hamcrest:hamcrest-core:jar:1.2.1:test
[INFO] \- com.google.code.gson:gson:jar:2.1:compile

【问题讨论】:

    标签: java eclipse maven m2eclipse m2e


    【解决方案1】:

    通过正确配置dependency 插件。属性excludeTransitive 定义是否忽略传递依赖。确保它的值为false

    mvn help:effective-pom 可能有助于了解插件的配置方式。

    [编辑] copy-dependencies 只会复制 dependency:tree 显示的内容。正如您在上面的输出中看到的,craftbukkit 本身没有任何进一步的依赖关系。我的猜测是craftbukkit 的 POM 中的所有依赖项都有 <optional>true</optional>

    如果是这样,那么您将不得不在您的 POM 中再次提及所有这些。

    【讨论】:

    • effective-pom 显示没有定义或包含排除项,如果我正确理解文档,这应该使其默认为“包含所有”传递。以防万一,我会尝试将其强制为假。
    • 同时查看craftbukkit的POM。 copy-dependencies 将忽略 optional 依赖项。
    • 我已经为上面的craftbukkit 添加了依赖树。我没想到会复制 provided 依赖项,但我确实希望出现 compile 依赖项。看看 CraftBukkit 的有效 pom,在任何地方都没有使用 optional。
    • 奇数。当您在 m2e 编辑器(树视图,而不是 XML)中双击依赖项时,您是否看到正确的 POM?也许您的 .m2 文件夹中的 POM 已过期?
    • 好吧...我不知道这里发生了什么。也许尝试运行mvn-X 以查看copy-dependencies 插件的完整配置。也许你可以在那里找到一些东西。
    猜你喜欢
    • 2019-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-24
    • 1970-01-01
    • 1970-01-01
    • 2015-12-03
    相关资源
    最近更新 更多