Maven-多模块
- Maven多模块项目,适用于一些比较大的项目,通过合理的模块拆分,实现代码的复用,便于维护和管理。尤其是一些开源框架,也是采用多模块的方式,提供插件集成,用户可以根据需要配置指定的模块。
- 一般进行分层开发,最常见的就是分为domain(数据模型层)、dao(数据库访问层)、service(业务逻辑层)、web(表现层),这样分层之后,各个层之间的职责会比较明确,后期维护起来也相对比较容易。
继承
- 如果项目划分了多个模块,都需要依赖相似的jar包,只需要创建一个父模块,在它的pom.xml文件中配置依赖的jar包,功能模块只需要继承父模块,就可以自动得到其依赖jar包,而不需要在每个模块中都重复配置。
- 设计如下
?-parent 父级工程-pom类型—负责管理jar包
?-common(util) jar类型—共用的一些工具类
?-domain jar类型—负责实体类,vo类
?-service jar类型—负责业务的相关处理
?-dao jar类型—负责数据库连接
?-web war类型 —负责控制层
聚合
- 一些开源项目,都会把自己的源代码公开到github之类的网站上,我们通过下载其代码,在本地执行maven install,可以把代码编译成jar包安装到本地仓库。而一个项目通常有多个模块,比如spring web;spring jdbc等20多个模块,如果一个一个的执行maven install,太过繁琐,而且这些模块都是彼此依赖的,必须搞清楚依赖关系按顺序执行,才不会报错。而聚合项目就是通过一次maven install,自动完成上面的整个过程
- 设计如下
- ?-spirng-parent 父级工程 pom类型
- ?-spring-web pom类型
?-web-controller war类型
?-web-service jar类型
?-web-dao jar类型
?-web-domain jar类型 - ?-spring-jdbc pom类型
?-jdbc-controller war类型
?-jdbc-service jar类型
?-jdbc-dao jar类型
?-jdbc-domain jar类型 - ?-spring-mvc pom类型
?-mvc-controller war类型
?-mvc-service jar类型
?-mvc-dao jar类型
?-mvc-domain jar类型
- ?-spring-web pom类型
- ?-spirng-parent 父级工程 pom类型
聚合与继承的关系
区别:
- 对于聚合模块来说,它知道有哪些被聚合的模块,但那些被聚合的模块不知道这个聚合模块的存在。
- 对于继承关系的父pom来说,它不知道有哪些子模块继承与它,但那些子模块都必须知道自己的父pom是什么
共同点:
- 聚合pom与继承关系中的父pom的packaging都是pom
- 聚合模块与继承关系中的父模块除了pom之外都没有实际的内容。
创建一个继承的方式:Maven多模块
-
创建一个空项目
-
添加父级模块(负责管理jar包)
-
设置pom类型
-
添加实体类子模块
-
添加控制层子模块
-
设置为war类型
-
添加业务逻辑子模块
-
添加dao子模块
-
添加工具类子模块
-
除了控制层模块,父级模块,设置为jar类型
- controller指向service
- service指向mapper
- mapper指向domain
- domain指向common
- 一个简单的继承方式的maven多模块就完成了。
创建一个聚合方式:Maven多模块
- 在父级模块中有很多其他父模块,创建一个car项目,并设置为pom类型
- 添加子模块
- 这只添加了一个子模块。
- 在父级模块pom.xml中生成相关子模块