Maven多模块项目的阶段订单?

Maven多模块项目的阶段订单?,maven,maven-2,multi-module,Maven,Maven 2,Multi Module,原谅我。我是马文的书呆子 以下是我的maven项目目录: project/ pom.xml moduleA/ moduleB/ sub-moduleA/ sub-moduleB/ sub-moduleC/ moduleC/ 当然,在每个模块和子模块中,它们都有自己的pom.xml。此外,在此示例中,moduleB依赖于moduleA,moduleA依赖于moduleC。我知道在maven中,它经历了多个阶段,但它是

原谅我。我是马文的书呆子

以下是我的maven项目目录:

project/
    pom.xml
    moduleA/
    moduleB/
        sub-moduleA/
        sub-moduleB/
        sub-moduleC/
    moduleC/
当然,在每个模块和子模块中,它们都有自己的
pom.xml
。此外,在此示例中,
moduleB
依赖于
moduleA
moduleA
依赖于
moduleC
。我知道在maven中,它经历了多个阶段,但它是一次一个阶段,还是一次一个模块。现在,我只关心的三个阶段是
编译
打包
,和
安装

例如:

它是否按顺序1进行操作:

还是按顺序2进行:

或者它是以完全不同的顺序进行的,还是我对maven的理解完全不同


我正在运行Maven 2.2.1。谢谢

首先,我建议使用Maven 3而不是Maven 2,从后者到前者的迁移非常简单(有时您可以在不做任何更改的情况下完成),并且您会注意到性能有很大的提高


此外,关于构建顺序,您应该阅读一些关于负责处理多模块项目的系统的信息。

顺序2:反应器检测所有项目,构建一个排序列表以按照正确的顺序构建项目(关于依赖项),然后按照此顺序构建项目


如果A依赖于B,那么如果B没有被完全处理,你就不能开始构建A。

我并不是故意小气,但你应该熟悉maven的输出。它确实准确地告诉你它在做什么。它将精确地告诉您构建模块的顺序,然后它将精确地告诉您在构建每个模块时正在进行的阶段/执行

例如,这里有一个简化的生成报告。首先,它告诉你它的建筑是什么项目。然后,对于每个阶段,都有一个报告,说明正在执行哪个mojo。请注意,执行行以三个--(这是maven 3;与maven 2不同)开始和结束。请注意,它告诉您:

  • 插件的名称,例如
    maven clean插件
  • 插件的版本
  • 正在执行的插件上目标的名称
  • 执行的名称,例如
    default clean
  • 请注意,所有作为生命周期阶段默认绑定的执行,即内置执行,都有一个类似于
    default clean
    的名称,其中标识了阶段,并且它是默认的

    [INFO] ------------------------------------------------------------------------
    [INFO] Building common-utilities 1.0.0-SNAPSHOT
    [INFO] ------------------------------------------------------------------------
    [INFO] 
    [INFO] --- maven-clean-plugin:2.3:clean (default-clean) @ common ---
    
       SNIP
    
    [INFO] --- maven-resources-plugin:2.5:resources (default-resources) @ common ---
    
       SNIP
    
    [INFO] --- maven-compiler-plugin:2.5.1:compile (default-compile) @ common ---
    
       SNIP
    
    [INFO] --- maven-resources-plugin:2.5:testResources (default-testResources) @ common ---
    

    当从Maven 2或Maven 3迁移时,你有什么好的资源考虑吗?我以前听说它非常复杂。@RobAveryIV它实际上非常简单,但这取决于当前项目配置的标准。或者是一些已经改变的事情。
    compile moduleC
    package moduleC
    install moduleC
    compile moduleA
    package moduleA
    install moduleA
    compile moduleB
    package moduleB
    install moduleB
    
    [INFO] ------------------------------------------------------------------------
    [INFO] Building common-utilities 1.0.0-SNAPSHOT
    [INFO] ------------------------------------------------------------------------
    [INFO] 
    [INFO] --- maven-clean-plugin:2.3:clean (default-clean) @ common ---
    
       SNIP
    
    [INFO] --- maven-resources-plugin:2.5:resources (default-resources) @ common ---
    
       SNIP
    
    [INFO] --- maven-compiler-plugin:2.5.1:compile (default-compile) @ common ---
    
       SNIP
    
    [INFO] --- maven-resources-plugin:2.5:testResources (default-testResources) @ common ---