使用Maven对项目进行管理的时候,多模块的继承和聚合是必不可少的,本文简要说明一下在eclipse IDE下创建多模块工程。

    1.Maven多模块的聚合

      

 

    一个Maven工程下创建多个模块,然后用一个专门管理模块来将实际应用到的模块组织起来。

   2.Maven多模块的继承

       

    子模块通过继承父模块,来获的父模块中的pom.xml配置信息。

   3.Maven多模块的继承+聚合

        

      上图是将1和2组合起来,可以将父模块作为聚合模块和父模块,这样父模块就可以聚合(组织)其子模块,子模块可以继承父模块。

   4.聚合和继承的关系

       区别 

  • 对于聚合模块来说,它知道有哪些被聚合的模块,但被聚合模块相互独立。

  • 对于继承关系的父POM来说,它不知道有哪些子模块继承它,但那些子模块都必须知道自己的父POM。

     共同点 :

  • 聚合 POM与继承关系中的父POM的packaging都是pom。

  • 聚合模块与继承关系中的父模块除了POM之外都没有实际的内容。

   

  5.使用Eclipse来搭建一个集成聚合和继承的工程

  5.1创建一个Maven工程,其作为聚合模块

     

secondriver
code-parent
0.0.1-SNAPSHOT
pom
code-parent
http://maven.apache.org

  5.2创建JavaSE的Maven模块(code-utils,图中为code-utilss),并选择上面code-parent工程作为父工程.   

  

  5.3同上,创建JavaWeb的Maven模块(code-web),并选择上面的code-parent工程作为符工程。

  5.4 Eclipse中的目录结构图

 

    途中有三个工程,准确的说code-parent是maven工程,code-utils,code-web是code-parent工程下的两个模块;code-parent对其进行了聚合,code-utils,code-web继承了code-parent.

   

    本地文件系统的目录结构:

    

    code-parent下的pom文件即为父pom.xml,code-utils和code-web下的pom.xml继承该pom.xml.

    

 5.5 code-parent的pom.xml

    

4.0.0
secondriver
code-parent
0.0.1-SNAPSHOT
pom
code-parent
http://maven.apache.org
code-utils
code-web
UTF-8
UTF-8
4.10
这是父模块,对子模块进行了集成,子模块对该模块进行了继承。主要作用是对公共配置的统一管理
junit
junit
${junit.version}
test

    配置中packaging的值是pom,说明code-parent是一个聚合模块或者父模块,这里其属于两者。modules下配置了两个模块分别就是code-utils和code-web.

5.6code-utils和code-web的pom.xml

  • code-parent/code-utils/pom.xml

   

4.0.0
secondriver
code-parent
0.0.1-SNAPSHOT
code-utils
code-utils

      配置中默认的packaging的值为jar。

  • code-parent/code-web/pom.xml

4.0.0
secondriver
code-parent
0.0.1-SNAPSHOT
code-web
war
code-web Maven Webapp
http://maven.apache.org
code-web

  至此通过Eclipse创建多模块的Maven工程已完成。至于pom.xml如何配置,就另当别论了,关于maven的pom.xml配置更多信息参见: