对于使用maven构建的java项目,通常聚合多个子模块项目。在版本迭代的过程中经常变更版本号,更新parent版本号,发现子模块版本号没有更新,需要一个个的手动去更新,太麻烦,且容易出错。
在版本更新之后,内部模块之间的依赖也需要变更,往往存在遗漏。
MAVEN多个子模块项目
以上是一个基本的
主项目parent包
maven-multily-module/pom.xml
- 指定整个应用的dependencyManagement
- 定义项目的发布的仓库地址distributionManagement
- 所有第三方依赖的版本号全部定义在properties下
- 所有内部模块依赖版本号统一使用${project.version}
- 指定所有的子模块modules
项目子模块pom.xml
app-api/pom.xml;app-dao/pom.xml;util/pom.xml;trade-core/pom.xlm;user-core/pom.xml
- 明确定义parent模块的artifactId,groupId,version
- 不要定义子模块的version(同parent保持一致)
- 子模块无需定义groupId
- 子模块所有的依赖包版本全部集成parent模块,即:子模块不得定义依赖包版本号
- 子模块需定义是否需要deploy到私服
true - 对于需要depoly的子模块【对外发布的,比如dubbo提供的api包】不应该依赖重量级jar包(比如:spring,mybatis等)
子模块packaging为pom
app-core/pom.xml
- 指定所有的子模块modules
- 无需定义groupId
- 明确定义parent模块的artifactId,groupId,version
以上定义规则保证了项目内部模块之间的依赖版本统一,第三方依赖包版本不冲突