maven dependency全局排除

一、场景示例

想把springboot项目的日志实现改为log4j2:

<dependency>
    <groupId>org.springframework.bootgroupId>
    <artifactId>spring-boot-starter-log4j2artifactId>
dependency>

而springboot默认的日志实现为logback,发现pom.xml中的很多starter都包含spring-boot-starter-logging:

<dependency>
    <groupId>org.springframework.bootgroupId>
    <artifactId>spring-boot-starter-loggingartifactId>
    <version>1.5.2.RELEASEversion>
dependency>

两个同时存在会有问题,比如报:

SLF4J: Class path contains multiple SLF4J bindings

二、解决办法

全局排除spring-boot-starter-logging的依赖。把spring-boot-starter-logging写成独立的dependency,然后用exclusion排除其中的所有依赖,就等于没有依赖spring-boot-starter-logging了:

<dependency>
    <groupId>org.springframework.bootgroupId>
    <artifactId>spring-boot-starter-loggingartifactId>
    <exclusions>
        <exclusion>
            <groupId>*groupId>
            <artifactId>*artifactId>
        exclusion>
    exclusions>
dependency>

<dependency>
    <groupId>org.springframework.bootgroupId>
    <artifactId>spring-boot-starter-log4j2artifactId>
dependency>

你可能感兴趣的:(java)