树中的Maven包的版本不同于dependency:tree

树中的Maven包的版本不同于dependency:tree,maven,maven-2,maven-3,maven-shade-plugin,Maven,Maven 2,Maven 3,Maven Shade Plugin,我有一个类似的依赖结构: A:compile com.jolbox:bonecp:jar:0.7.1.RELEASE:compile com.google.guava:guava:jar:r06:compile com.google.guava:guava:jar:13.0:compile 也就是说,我的项目依赖于A,它依赖于Guava13.0和BoneCP(它依赖于GuavaR06) 当我运行mvn clean dependency:tree | grep g

我有一个类似的依赖结构:

A:compile
    com.jolbox:bonecp:jar:0.7.1.RELEASE:compile
        com.google.guava:guava:jar:r06:compile
    com.google.guava:guava:jar:13.0:compile
也就是说,我的项目依赖于A,它依赖于Guava13.0和BoneCP(它依赖于GuavaR06)

当我运行
mvn clean dependency:tree | grep guava
时,我看到:

[INFO] |  |  \- com.google.guava:guava:jar:13.0:compile
据我所知,Maven的依赖性解决方案就是应该发生的

然而,当我运行
mvncleanpackage
并解压缩生成的jar时,似乎已经包含了guavar06。在一个示例中,我依赖于Guava 13.0中的功能,但不是r06,因此我遇到了运行时故障(
java.lang.NoClassDefFoundError:com/google/common/collect/Table

我正在使用shade插件(1.4)创建包含所有依赖项的jar。以下是
mvn--version
的结果(在我们的构建服务器上,我遇到了这个问题):

在另一台机器(我的本地工作站)上,打包的jar正如我所期望的那样包含Guava13.0。该计算机上的版本信息为:

/usr/java/default
Apache Maven 2.2.1 (rNON-CANONICAL_2011-06-28_14-50_mockbuild; 2011-06-28 10:50:25-0400)
Java version: 1.6.0_27
Java home: /usr/java/jdk1.6.0_27/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux" version: "2.6.43.8-1.fc15.x86_64" arch: "amd64" Family: "unix"

从Maven 2.2.1到3.0.4的更改是否改变了依赖项解决策略?这里发生了什么?

这里记录了依赖解析的差异:谢谢,我想这就解释了。jar和dependency:tree之间的不同结果让我特别困惑。如果你想把这个写进回信,我会接受的。
/usr/java/default
Apache Maven 2.2.1 (rNON-CANONICAL_2011-06-28_14-50_mockbuild; 2011-06-28 10:50:25-0400)
Java version: 1.6.0_27
Java home: /usr/java/jdk1.6.0_27/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux" version: "2.6.43.8-1.fc15.x86_64" arch: "amd64" Family: "unix"