Maven:如何比较多模块项目的两个模块的子模块?

时间:2017-03-14 02:17:00

标签: maven module maven-dependency-plugin

我有一个多模块项目,有两个模块A和B.两者都有自己的模块,这里称为子模块。

我想在两种类型的模块之间进行一些比较。例如,我想检查A的所有子模块是否应该在B中具有关联的子模块。我该怎么做?

我查看了maven-enforcer-plugin,但我只找到了管理插件和依赖项的示例,而不是模块。

到目前为止,我已经能够使用this link中的以下命令打印出A的子模块列表:

mvn --also-make dependency:tree | grep maven-dependency-plugin | awk '{ print $(NF-1) }'

但是当我尝试将其输出到这样的文件时:

mvn dependency:list -DoutputFile="foo.txt"

我看到在{A}的每个子模块中创建了foo.txt,而不是模块A(聚合器)。我需要一个带有依赖项列表的单个文件,我可以使用

从中筛选出模块
grep maven-dependency-plugin | awk '{ print $(NF-1) }'

所以我需要两件事: 1.在聚合器的一个文件中输出dependency:listdependency:tree,并且 2.在整个项目中,从模块A和B中读取两个文件,并有办法进行一些比较和输出结果(如果比较产生不希望的结果,则无法构建)。

任何指针都会有所帮助。

编辑:

澄清在每次构建项目的构建(mvn clean install)期间,我都需要完成所有这些。

1 个答案:

答案 0 :(得分:0)

  
      
  1. 在聚合器的一个文件中输出dependency:list或dependency:tree
  2.   

只需调整命令即可获取所有子模块的列表,例如A模块,您可以将其所有子模块的重定向列表保存为文件 -

mvn --also-make dependency:tree | grep maven-dependency-plugin | awk '{ print $(NF-1) }' >> subModuleList.txt
  
      
  1. 在整个项目中,从模块A和B中读取这两个文件,并有办法进行一些比较和输出结果(如果构建失败,则为   比较会产生不良后果。)
  2.   

对于比较的情况,假设您在此阶段有两个文本文件,即subModuleListA.txtsubModuleListB.txt。您可以编写 Test 来解析这些文件并比较它们的元素。对于不良结果,此测试应该失败,从而标记完整的构建失败(我也希望记录失败的原因。)