SpringBoot使用log4j2的POM依赖顺序要求

POM使用标签排除多个依赖包的同一个依赖时,需要注意pom依赖的顺序问题(当然也可以每个都进行排除)。

1 正常场景

以下为SpringBoot相关的依赖:


        
            org.springframework.boot
            spring-boot-starter-web
            
                
                    org.springframework.boot
                    spring-boot-starter-logging
                
                
                    spring-boot-starter-json
                    org.springframework.boot
                
            
        
        
            org.springframework.boot
            spring-boot-starter-log4j2
        
        
            
            org.apache.logging.log4j
            log4j-jcl
        
        
            org.springframework.boot
            spring-boot-starter-thymeleaf
        
        
            org.springframework.boot
            spring-boot-starter-jdbc
        
        
            org.springframework.boot
            spring-boot-starter-aop
        
        
            org.springframework.boot
            spring-boot-configuration-processor
            true
        

运行后控制台结果如下:


1.png

2 异常场景

当我调整了pom中Spring的依赖顺序后如下(其余保持完全不变):


        
            org.springframework.boot
            spring-boot-starter-thymeleaf
        
        
            org.springframework.boot
            spring-boot-starter-jdbc
        
        
            org.springframework.boot
            spring-boot-starter-aop
        
        
            org.springframework.boot
            spring-boot-configuration-processor
            true
        
        
            org.springframework.boot
            spring-boot-starter-web
            
                
                    org.springframework.boot
                    spring-boot-starter-logging
                
                
                    spring-boot-starter-json
                    org.springframework.boot
                
            
        
        
            org.springframework.boot
            spring-boot-starter-log4j2
        
        
            
            org.apache.logging.log4j
            log4j-jcl
        

再次启动应用时,控制台打印如下:


2.png

3 疑问和思考

3.png

现象:经过依赖分析,确实日志冲突了(spring-boot-starter-jdbcspring-boot-starter-thymeleaf
疑问:难道pom的依赖还有顺序的要求?

经过反复验证,发现当MAVEN使用标签时,需要在依赖的第一个包进行排除,如下:


        
            org.springframework.boot
            spring-boot-starter-thymeleaf
            
                
                    org.springframework.boot
                    spring-boot-starter-logging
                
            
        
        
            org.springframework.boot
            spring-boot-starter-jdbc
        
        
            org.springframework.boot
            spring-boot-starter-aop
        
        
            org.springframework.boot
            spring-boot-configuration-processor
            true
        
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.springframework.boot
            spring-boot-starter-log4j2
        
        
            
            org.apache.logging.log4j
            log4j-jcl
        

你可能感兴趣的:(SpringBoot使用log4j2的POM依赖顺序要求)