在Maven中,我如何发现依赖于特定依赖的内容?

时间:2013-08-20 22:08:20

标签: java linux maven maven-3

我有this problem,我认为它是由某些库传递的,这取决于旧版本的速度。我的pom明确要求正确版本的速度,但我认为其他依赖是传递性地提取旧版本的速度,而这正在我的类路径中使用。

我知道mvn dependency:tree,但在一个复杂的项目中,这可能会输出一个非常高,难以阅读的树。比起我想要弄清楚什么取决于速度1.5,这更像是思考。

所以我认为,“贪图救援”。但这没有用,因为我得到了这个输出:

$ mvn dependency:tree | grep velocity
[INFO] |  |  +- velocity:velocity:jar:1.5:compile
[INFO] |  |  |  +- velocity:velocity:jar:1.5:compile
[INFO] |  |  |  +- velocity:velocity:jar:1.5:compile
[INFO] +- org.apache.velocity:velocity:jar:1.6.3:compile
[INFO] +- org.apache.velocity:velocity-tools:jar:2.0:compile
[INFO] |  +- velocity:velocity:jar:1.5:compile
[INFO] |  |  +- velocity:velocity:jar:1.5:compile
[INFO] +- org.apache.velocity:velocity-tools:jar:2.0:compile
[INFO] |  \- org.apache.velocity:velocity:jar:1.6.3:compile (version managed from 1.6.2)
[INFO] |  |  |  +- velocity:velocity:jar:1.5:compile
[INFO] |  +- org.apache.velocity:velocity-tools:jar:2.0:provided
[INFO] |  |  \- org.apache.velocity:velocity:jar:1.6.3:provided (version managed from 1.6.2)
[INFO] |  |  |  +- velocity:velocity:jar:1.5:provided
[INFO] |  +- org.apache.velocity:velocity-tools:jar:2.0:provided
[INFO] |  |  \- org.apache.velocity:velocity:jar:1.6.3:provided (version managed from 1.6.2)
[INFO] |  +- org.apache.velocity:velocity-tools:jar:2.0:provided
[INFO] |  |  \- org.apache.velocity:velocity:jar:1.6.3:provided (version managed from 1.6.2)
[INFO] |  |  |  +- velocity:velocity:jar:1.5:compile
[INFO] |  +- org.apache.velocity:velocity:jar:1.6.3:compile (version managed from 1.6.3)
[INFO] |  +- org.apache.velocity:velocity-tools:jar:2.0:compile (version managed from 2.0)
[INFO] |  |  +- velocity:velocity:jar:1.5:compile

我无法分辨那里的第一速度1.5究竟是什么。 maven是否为dependency:tree提供了一些让我的生活更轻松的论据?或者是否有一些巧妙的技巧我可以使用shell命令来解决这个问题?我正在使用cygwin btw,但我希望这没关系,因为它有大部分可用的命令。

2 个答案:

答案 0 :(得分:4)

我认为这应该对你有帮助(取自Resolving conflicts using the dependency tree

mvn dependency:tree -Dverbose -Dincludes=velocity

如果这没有用,我宁愿过滤依赖grep(取自Filtering the dependency tree

mvn dependency:tree -Dincludes=velocity:velocity

答案 1 :(得分:0)

cheffe's answer是个好人。

除此之外,我使用的另一个解决方案通常涉及egrep,基本上当我想看到更大的图片时。

mvn dependency:tree -Dverbose | egrep --color 'velocity|$'

优点:

  • 彩色输出
  • 单词的部分匹配(因为它只是grep)。

缺点:

  • 输出的详细程度