Maven 依赖树不同于 M2E 的依赖层次结构



我正在构建一个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 for 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

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

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

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

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

最新更新