1.Maven管理多模块应用
1.1)场景描述
commonModel:提供公共的基础服务,比如工具类,常量类等等
bussinessModel:业务模块,是系统真正要实现的业务,依赖于common模块,比如订单管理,财务统计,会员管理等
application:可发布的web应用,由各个bussinessModel组成,最终满足项目整体需求
第三方模块:包括各类框架,Spring,Mybatis,日志等.整个应用都是依赖它们完成开发的
首先new一个空项目
这样一个空的新项目就建好了.
那么首先我们要有一个父工程 至少是个maven工程
创建子模块 java maven工程
创建子模块 java maven web工程
假设现在maven-java也想当父工程
假设各模块间各自需要引入各自的依赖,各自间同一个依赖版本不同
当父类引入这些依赖后,即使子类没有引入,也都有了这些依赖,这样版本也可以统一
父工程管理依赖,现在这样出现一个问题
在父工程用<dependencyManagement> 加强对所有依赖的管理
这样就需要子工程声明式继承父依赖,不能无条件继承
比如说子工程maven-java需要一个mysql依赖
比如子工程maven-web需要junit
并且都不需要写版本号,这叫做声明式依赖,版本继承自父工程的版本号,这样就各取所需,并且,父工程版本号改变会影响子工程
但是如果子模块里指定依赖的版本号,那么就不会继承自父类
父工程管理依赖的版本号
这样如果哪个jar包需要升级,直接上面改版本号就行了
这样以第一种方式进行多模块管理就基本完了
创建子工程的时候,java或者web模式都可以,只要是maven工程就行了
先new个父工程
要想成为一个Maven父工程,必须满足两要求
1.packaging标签的文本内容必须设置为pom
2.删除SRC目录
创建子模块
先建个maven java 子模块
创建maven web子模块
比如说现在maven-java-02也想当父工程
还是一样
1.packaging标签文本内容为pom
2.删除src目录
还是回到依赖上面
父工程加依赖,子孙后代就都有了 无条件继承
那么还是老办法加
子类需要什么就用声明式问父工程,或爷爷工程拿 如果自己想要个不同与其他的版本的,自己加
版本控制和第一种方式一样
注意一点
如何在pom.xml文件指定编译插件的版本
只需要在父类工程添加
第三种是第一种和第二种的混合使用