1/ 场景
有很多小应用,有一些公共的特点,比如说都依赖了spring-boot、log4j2、lombok、fastjson等等,为了方便开发,可以使用Maven定制一个parent来简化开发,统一管理第三方依赖的版本。(为后续的微服务做准备哦!)
2/ 构建 parent
2.1. 新建一个Maven工程,any-root。
2.2. 修改pom.xml,添加父工程的依赖,基本上子工程都会用到这些依赖。
<?xml version="1.0" encoding="UTF-8"?>4.0.0cn.ictgu any-root 1.0.RELEASEpom1.5.3.RELEASE1.81.16.161.2.323.51.10.2org.springframework.boot spring-boot-dependencies ${spring-boot.version}pomimportorg.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-logging org.springframework.boot spring-boot-starter-tomcat org.springframework.boot spring-boot-starter-undertow org.springframework.boot spring-boot-starter-log4j2 org.springframework.boot spring-boot-starter-aop org.projectlombok lombok ${lombock.version}com.alibaba fastjson ${fastjson.version}org.apache.commons commons-lang3 ${commons-lang3.version}org.jsoup jsoup ${jsoup.version}org.springframework.boot spring-boot-maven-plugin
附加一篇文章: Maven实战(六)--- dependencies与dependencyManagement的区别
2.3. 依赖了log4j2,需要在resources目录下添加log4j2的配置文件
<?xml version="1.0" encoding="UTF-8"?>????%clr{%d{yyyy-MM-dd HH:mm:ss.SSS}}{faint} %clr{%5p} %clr{${sys:PID}}{magenta} %clr{---}{faint} %clr{[%15.15t]}{faint} %clr{%-40.40c{1.}}{cyan} %clr{:}{faint} %m%n%xwEx
2.4 将父工程安装到本地仓库 方式一:使用 IDEA
方式二:使用命令行,进入pom.xml所在目录,执行
mvn clean install
至此,父工程已安装完毕,其它工程依赖此工程即可添加父工程所有依赖。
3/ 快速构建子工程
3.1 新建一个Maven工程:avatar
3.2 修改pom.xml,继承父工程any-root
<?xml version="1.0" encoding="UTF-8"?>4.0.0cn.ictgu avatar 1.0-SNAPSHOTcn.ictgu any-root 1.0.RELEASE
IDEA 会自动导入父工程中的依赖:
3.3 添加启动类,测试lombok/log4j2
4/ 子项目添加其它依赖,以spring-boot-actuator 为例:
4.1 在avatar项目的基础上,修改pom.xml,添加actuator的依赖
<?xml version="1.0" encoding="UTF-8"?>4.0.0cn.ictgu avatar 1.0-SNAPSHOTcn.ictgu any-root 1.0.RELEASEorg.springframework.boot spring-boot-starter-actuator
4.2 添加配置文件,在resources下添加application.yml
management: security: enabled: false
作用是可以随意访问actuator下的所有端点
4.3 启动项目
4.4 验证actuator下的端点,访问http://localhost:8080/beans 查看整个应用所有bean的依赖关系:
5/ 总结
将公共依赖定制为父工程,有如下好处:
- 避免手动添加依赖带来的失误操作;
- 统一管理依赖的版本号;
- 加快子工程的构建,一个继承即可获得大量公共服务。