最近在写微服务springcloud系列,由于微服务架构下,project会分的很多,业内通常的做法是一个父project,多个子module,或者父子多层嵌套。那么jar包怎么管理是最合理和规范的呢,接下来咱们就一起讨论学习下。
原则一:父工程负责jar定义和版本管理;子工程显示声明具体依赖
- 公共的jar都定义在父工程中,子工程直接继承
- 父工程定义所有jar包版本,这样可以做到统一版本控制。实际当中由于版本泛滥引起的坑不在少数,相信很多同学深受其害。
- 如果我们的工程比较复杂,引入的jar非常多的时候,父工程的pom文件就会又丑又长,一定不要惊讶。
原则二:重点说下dependencyManagement和dependencies的区别
- dependencyManagement:只是声明依赖,实际并不会引入,因此子项目需要显示声明需要的依赖,如果不声明是不会从父工程中集成下来的,这点尤其重要。子项目在声明的时候一般不写版本号,版本号逆向去父工程中查找,这样做仅仅是减少了子工程中不写版本号。如果写了版本号,子工程的版本号覆盖父工程的版本号。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>