如何轻松区分两个Maven pom文件之间的依赖关系?

时间:2013-03-29 19:10:09

标签: maven pom.xml

我的老板喜欢按照范围,组和工件ID对给定Maven pom文件中的依赖项进行排序。

我最近继承了相当多的项目,这些项目具有相当多的未被排序的依赖项。所以我整理了它们。

长话短说,我想确保我不会无意中删除依赖项或将错误的排序依赖项复制到错误的pom中。

所以我想知道是否存在某种机制或Maven报告插件,它将与先前版本区分pom并向我显示添加或修改了哪些依赖项。

这样的事情是否存在?

4 个答案:

答案 0 :(得分:5)

我喜欢使用简单的script来获取依赖关系的排序列表,然后将它们与像meld这样的difftool进行比较。

#!/bin/bash
# first grab all dependencies
mvn dependency:resolve >/dev/null

# then list them with -o to keep noise low,
# remove extra information and duplicates
mvn -o dependency:list \
| grep ":.*:.*:.*" \
| cut -d] -f2- \
| sed 's/:[a-z]*$//g' \
| sort -u 

答案 1 :(得分:4)

Maven插件 - version,可能会拯救你。

mvn versions:compare-dependencies -DremotePom=my.group:other-project:1.0-SNAPSHOT

我喜欢通过过滤,排序和打印嵌套多个模块的唯一差异来简化。要做到这一点:

   mvn versions:compare-dependencies -DremotePom=my.group:other-project:1.0-SNAPSHOT | grep '\->' | sort | uniq

希望你觉得它很有用。

答案 2 :(得分:2)

我发现(对我来说)最简单的方法是使用eclipse' Effective POM'图。

这是怎么做的

  1. 在日食中打开第一个pom。
  2. 点击“依赖关系层次结构”'那个pom的标签。
  3. 在eclipse中打开第二个pop。
  4. 点击“依赖关系层次结构”'那个pom的标签。
  5. 将第二个pom窗口拖出eclipse以创建第二个eclipse窗口,以便您可以并排查看pom依赖项。
  6. 希望这会有所帮助:)

答案 3 :(得分:1)

在Maven中解决依赖项问题的最佳方法是以下命令

mvn dependency:tree