zoukankan      html  css  js  c++  java
  • maven中多个子模块的构建顺序

     

    在实际的项目开发中,为了更好的组织项目代码,会采用分层架构的方式,这就会使用到maven的多模块特性。
    假设项目分为A、B、C、D四层,在父模块的pom.xml中,一般这样来对子模块进行聚合

    <modules>
        <module>A</module>
        <module>B</module>
        <module>C</module>
        <module>D</module>
    </modules>
    

    假设各个子模块间,配置的相互依赖关系如下:

    A 依赖 B
    B 依赖 C
    D 依赖 A
    

    构建父模块,我们能够看到以下输出:

    [INFO] ------------------------------------------------------------------------
    [INFO] Reactor Build Order:
    [INFO] 
    [INFO] C
    [INFO] B
    [INFO] A
    [INFO] D
    [INFO]                                                                         
    [INFO] ------------------------------------------------------------------------
    

    这是因为子模块的构建顺序受两个因素影响:

    1、父模块中各子模块的声明次序
    2、子模块间的依赖关系

    实际的构建顺序是这样形成的:
    maven按照次序读取pom,如果该pom没有依赖其他子模块,就构建该模块,否则就构建其依赖的模块,如果该依赖模块还依赖于其他的模块,那么就进一步构建依赖的依赖。

    在示例中,A模块依赖B,而B模块又依赖C,因此要先构建C,再构建B,然后才能构建A。而D依赖的模块A已经构建了,因此直接构建它。

    模块间的依赖关系会将反应堆(Reactor)构成一个有向非循环图,各个模块是该图的节点,依赖关系构成了有向边。这个图不允许出现循环。如果A依赖B,B又依赖A,这样就产生了循环依赖,Maven会报错。

  • 相关阅读:
    【Ubuntu 笔记】翻译 32.1 Job Control
    【Class 学习笔记】 浮点数的储存,运算
    【Ubuntu学习笔记】 安装篇-锐捷、scim、root改密码
    【Ubuntu学习笔记】安装篇-网络配置遇到的问题
    MySQL增删改查
    Spring MVC详解
    SSH和SSM对比总结
    hibernate工作原理
    JavaBean与xml互转的方法详解
    spring MVC如何获取session传值到前台
  • 原文地址:https://www.cnblogs.com/shoshana-kong/p/14209214.html
Copyright © 2011-2022 走看看