我有一个多模块项目,有两个模块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:list
或dependency:tree
,并且
2.在整个项目中,从模块A和B中读取两个文件,并有办法进行一些比较和输出结果(如果比较产生不希望的结果,则无法构建)。
任何指针都会有所帮助。
编辑:
澄清在每次构建项目的构建(mvn clean install
)期间,我都需要完成所有这些。
答案 0 :(得分:0)
- 在聚合器的一个文件中输出dependency:list或dependency:tree
醇>
只需调整命令即可获取所有子模块的列表,例如A模块,您可以将其所有子模块的重定向列表保存为文件 -
mvn --also-make dependency:tree | grep maven-dependency-plugin | awk '{ print $(NF-1) }' >> subModuleList.txt
- 在整个项目中,从模块A和B中读取这两个文件,并有办法进行一些比较和输出结果(如果构建失败,则为 比较会产生不良后果。)
醇>
对于比较的情况,假设您在此阶段有两个文本文件,即subModuleListA.txt
和subModuleListB.txt
。您可以编写 Test 来解析这些文件并比较它们的元素。对于不良结果,此测试应该失败,从而标记完整的构建失败(我也希望记录失败的原因。)