2012-08-15 155 views
2

我正在构建一个Java项目MaterialsDep,这是一个用于项目craftbukkit的插件[加载到我的工作空间以及类型jar和范围编译的MaterialsDep的直接依赖项]。在eclipse中查看MaterialsDep的pom依赖关系层次结构CB所需的所有jar显示为已解决并正确列出。但是,在项目AP上运行mvn dependency:copy-dependencies只会复制直接依赖关系而没有其他任何内容。与M2E的依赖层次不同的Maven依赖关系树

运行依赖:树显示:

[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 

回答

0

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

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

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

如果是这样的话,那么你将不得不在你的POM中再次提到它们。

+0

effective-pom显示没有已定义或包含的排除项,如果我正确理解文档,应该使其默认为“包含所有”传递项。为了以防万一,我会放弃它。 – MC78 2012-08-15 19:23:36

+0

也看看'craftbukkit'的POM。 'copy-dependencies'将忽略'可选的'依赖关系。 – 2012-08-16 08:58:53

+0

我已经为上面的craftbukkit添加了依赖关系树。我没有想到'提供的'依赖被复制,但我确实希望'编译'出现。看看CraftBukkit的有效性,任何地方都没有可选的功能。 – MC78 2012-08-16 10:17:07