Pom中多模块配置原则.md

简书迁移

Posted by thrfox on June 29, 2020

对于使用maven构建的java项目,通常聚合多个子模块项目。在版本迭代的过程中经常变更版本号,更新parent版本号,发现子模块版本号没有更新,需要一个个的手动去更新,太麻烦,且容易出错。

在版本更新之后,内部模块之间的依赖也需要变更,往往存在遗漏。

MAVEN多个子模块项目

image.png

以上是一个基本的

主项目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

以上定义规则保证了项目内部模块之间的依赖版本统一,第三方依赖包版本不冲突