Maven多模块结构搭建
现在Maven成了项目中必不可少的项目管理工具, 同时项目也开始模块化, 各个模块使用maven管理, 笔者因为要向一个系统内集成Activiti工作流引擎, 为了尽量减少代码的侵入性, 我们决定把Activiti 作为一个模块嵌入进去.
模块化管理的内幕: 模块化管理的最终目的是将逻辑关联不大的模块分开管理, 在编译的时候单独编译打包, 最终把打成的包添加到依赖这个模块的模块, 比如有A, B两个包 B模块依赖于A 模块, 那么编译的时候 就会把A 模块打包放到 B 模块中从而和 B模块一起打包成一个新的模块, 这也标志 B 模块可以使用 A 的包或则类, 但是反过来就不行了, 这样的话项目最终一定会有一个根模块, 它会有所有模块, 而且没有模块 依赖于它, 作为项目最终运行的模块. 简单图示
`
如图, A代表这是一个多模块组合的项目, 其中蓝色线条代表项目的父子关系. 黑色线条表示模块的依赖关系, 如图所示 web 依赖于 B1, B5, 而B5依赖于B3, 最后打包会成为
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中模块依赖已完成了