大家都知道随着业务的进展,项目会变得越来越多,这个时候如果没有一个统一的依赖管理中心,就会有很多问题发生。
如果没有依赖管理中心,会发生哪些问题呢?
项目的依赖会有很多重复,一模一样的依赖可能要重复写多次,浪费时间。
如果没有一个公共的代码依赖项目,像很多工具类、pojo对象需要重复写多个,最可怕的是不同项目之间的相同工具类、pojo名称一样,但是里面的代码有可能不一样。
同一个依赖不同项目之间可能版本也会不一样,无法进行版本的统一管理和升级。
install的时候需要每个项目一个个进行,无法进行统一的install操作,项目一多就非常浪费时间。
当然它的危害还不止这些,所以我们需要有一个统一的依赖管理维护中心,别担心Maven都给我们提供好了。
如果想研究Maven怎么进行依赖才更加合适的童鞋,可以下载SpringBoot源码项目,SpringBoot的依赖关系就做的特别好,这边我也是借鉴SpringBoot的依赖关系来进行项目依赖改造的。
那问题来了,我要怎么进行依赖统一管理呢?
因为项目可能不是在同一个目录下面,所以没办法用传统的最外层pom来管理每一个子项目的pom依赖。
这边我们可以这么来,新建一个project-parent项目,该项目没有实际的代码,只有一份pom.xml文件,这个pom.xml文件就是用来统一管理每一个项目的依赖,每个子项目都会继承这个project-parent项目的pom依赖。
project-parent项目类型的packaging必须是pom,否则子项目无法继承。
然后再创建一个公用的project-common项目,作为子项目公共代码依赖项目,子项目可以通过dependency进行公共代码依赖项目的依赖引进。
project-parent项目中放在dependencys中的dependenc依赖可以直接被子项目所继承,如果不想依赖被子项目继承,可以放在dependencyManagement中。
关系图如下所示:
有些人可能就会问,那parent和common有什么区别?这就等同于我们java的继承和接口的区别,parent必须继承,但是common可以选择实现。
pom文件关键字介绍:
pom文件中profiles可以用来定义各个环境所对应的配置文件,这样就可以解决不同环境,配置文件打包的问题了。
pom文件中build用来构建项目jar、war、source源文件之类。
pom文件中dependencies用来定义本项目的依赖关系,所有项目所需要的依赖都可以在这边配置。
pom文件中properties用来定义一些常量,在pom中的其它地方可以直接引用。
pom文件中repositories主要是依赖和扩展的远程仓库配置。
pom文件中distributionManagement是项目分发信息,在执行mvn deploy后表示要发布的位置。
具体pom文件关键字信息可以阅读下面这篇文章:https://www.jb51.net/article/129417.htm
规范约束:
禁止子项目脱离父项目进行单独的pom文件配置。
子项目依赖不要和project-common依赖冲突,否则很容易出现循环依赖。
子项目禁止出现依赖的version版本号,统一放在project-parent项目中管理。
总结:
每一个东西都需要管理,项目依赖也不例外。如果放任项目依赖的混乱,不进行统一的管理,那日后升级项目依赖的时候,那将是灾难级的。