如何根据依赖关系列出Maven构建/编译序列?

如何根据依赖关系列出Maven构建/编译序列?,maven,pom.xml,Maven,Pom.xml,如果我有一个pom层次结构,其中superprom调用相互依赖的多个子模块,我如何根据依赖关系列出构建/编译序列?注意,如果superprom有mod1、mod2和mod3模块,mod2依赖于mod3和mod3依赖于mod1,那么序列是mod1、mod3和mod2。如果不从pom对数据层次结构进行复杂的XML解析,如何列出该顺序?也许您正在寻找Maven dependency:tree选项?您可能需要调整includes以仅包含您的模块 你想知道的是所谓的反应堆建造顺序 反应器根据每个项目在各自

如果我有一个
pom
层次结构,其中
superprom
调用相互依赖的多个子模块,我如何根据依赖关系列出构建/编译序列?注意,如果superprom有mod1、mod2和mod3模块,mod2依赖于mod3和mod3依赖于mod1,那么序列是mod1、mod3和mod2。如果不从pom对数据层次结构进行复杂的XML解析,如何列出该顺序?

也许您正在寻找Maven dependency:tree选项?您可能需要调整
includes
以仅包含您的模块


你想知道的是所谓的反应堆建造顺序

反应器根据每个项目在各自的项目描述符中声明的依赖关系确定正确的构建顺序,然后执行一组声明的目标。它可以用于构建项目和其他目标,例如站点生成。(来源:)

它收集所有要构建的模块,对项目进行排序并按顺序构建它们。它保证在其他模块需要之前构建任何模块

据我所知,没有直接的方法只创建这些项目的列表,但最接近获取信息的方法是:

mvn validate
它将在顶部显示您的反应堆建造顺序:

除了验证项目的正确性和所有必要的信息可用外,没有执行其他工作


有关更多信息,请参见和。

是否添加示例?我在OP中包含的示例应该足够了,否?
mvn validate
~/parent$ mvn validate
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO] 
[INFO] simple.parent
[INFO] simple.child
[INFO] simple.anotherchild
[...]                                                                        
mvn validate >validate.log

project_name=$(mvn org.apache.maven.plugins:maven-help-plugin:3.1.0:evaluate -Dexpression=project.name -q -DforceStdout)

sed '1,/^\[INFO\] Reactor Build Order:/ d' validate.log  |sed "/\[INFO\] ${project_name}/,$ d" |sed 's/\[INFO\] //'