1、移除依赖
当我们不想用springboot自带的logback的时候,想转而选用log4j的时候。可以排除logback。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<!-- 排除以下依赖 -->
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
2、第一声明优先原则
当有两个名称相同版本不同的依赖声明,那么先写的会生效。所以,先声明自己要用的版本的jar包即可。所以,如果想使环境中全部引用最新版本log4j,可以把如下声明放在前面。
<!-- 使用log4j2的较高版本,避免漏洞 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j</artifactId>
<version>2.17.0</version>
</dependency>
3、最短路径优先
直接依赖优先于传递依赖。如果传递依赖的jar包版本冲突了,那么可以自己声明一个指定版本的依赖jar,系统会优先引用最短路径的jar包,这样可以解决冲突。
4、dependencyManagement介绍
如果让所有的子模块使用依赖项的统一版本,确保应用的各个项目的依赖项和版本一致,保证测试的和发布的是相同的结果。那么在我们项目顶层的pom文件中可以使用dependencyManagement元素。通过dependencyManagement里面的元素来管理jar包的版本,这样当子项目中引用一个依赖的时候,则不用显示的列出版本号。Maven会沿着父子层次向上走,直到找到一个拥有dependencyManagement元素的项目,使用这个dependencyManagement元素中指定的版本号。