Maven多模块结构搭建

        现在Maven成了项目中必不可少的项目管理工具,  同时项目也开始模块化, 各个模块使用maven管理,  笔者因为要向一个系统内集成Activiti工作流引擎,  为了尽量减少代码的侵入性, 我们决定把Activiti 作为一个模块嵌入进去.

       模块化管理的内幕: 模块化管理的最终目的是将逻辑关联不大的模块分开管理, 在编译的时候单独编译打包, 最终把打成的包添加到依赖这个模块的模块,  比如有A, B两个包 B模块依赖于A 模块, 那么编译的时候 就会把A 模块打包放到 B 模块中从而和 B模块一起打包成一个新的模块, 这也标志 B 模块可以使用 A 的包或则类, 但是反过来就不行了,  这样的话项目最终一定会有一个根模块, 它会有所有模块, 而且没有模块 依赖于它, 作为项目最终运行的模块. 简单图示

        Maven多模块结构搭建`

        如图, A代表这是一个多模块组合的项目, 其中蓝色线条代表项目的父子关系. 黑色线条表示模块的依赖关系,  如图所示 web 依赖于 B1, B5,  而B5依赖于B3, 最后打包会成为

Maven多模块结构搭建

mav中 pom 文件的写法


在 A 中  使用 


定义自己的信息, 同时声明各个子模块


<groupId>com.hand</groupId>
<artifactId>A</artifactId>
<packaging>pom</packaging>
<version>1.0</version>
<name>A</name>

...
<modules>
   <module>B5</module>
   <module>B3</module>
   <module>B1</module>
   <module>web</module>
</modules>

在B3,和B1 中, 因为这两个模块没有依赖其他模块

    1,声明父模块, 定义自己信息, 一般除了 web最终模块其余的打包方式都是 jar

<parent>
   <groupId>com.hand</groupId>
   <artifactId>A</artifactId>
   <version>1.0</version>
   <relativePath>../pom.xml</relativePath>
</parent>
<artifactId>B3</artifactId>
<packaging>jar</packaging>
<name>Bak</name>
<version>1.0</version>

在 B5中依赖了B3 模块,  所以除了B1,B3 要加的信息之外还要添加依赖

<dependencies>
   <dependency>
      <groupId>com.hand</groupId>
      <artifactId>B</artifactId>
      <version>1.0</version>
   </dependency>
</dependencies>

在最后的web, 和 B5 基本一致, 区别就是我们要把它打包成 war 包

<artifactId>web</artifactId>
<packaging>war</packaging>
<name>Web</name>
<version>1.0</version>


这样maven中模块依赖已完成了