在尝试记录依赖项时,我遇到以下情况:
<repositories>
    <repository>
        <id>version99</id>
        <url>http://version99.qos.ch/</url>
    </repository>
</repositories>
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>99-empty</version>
        </dependency>
    </dependencies>
</dependencyManagement>
<dependencies>
    <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.25</version>
    </dependency>
    <!--<dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jcl-over-slf4j</artifactId>
        <version>1.7.25</version>
    </dependency>-->
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-core</artifactId>
        <version>1.2.3</version>
    </dependency>
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.2.3</version>
    </dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)
值得注意的是,依赖关系jcl-over-slf4j被注释掉了.令我惊讶的是,来自Spring的日志仍由Logback处理.这怎么可能?jcl和slf4j之间没有活动桥,那么我们如何才能在Logback中结束?
我证实了这一点:
commons-logging-99-empty.jar在classpath中.jcl-over-slf4j提到mvn dependency:tree -Dverbose -Dincludes=org.slf4j我真的很困惑.我期待NoClassDefFoundError上课commons-logging.
请注意,我无意jcl-over-slf4j在评论中留下这种依赖.我只是想了解发生了什么.我以为我终于明白了这些日志依赖,但显然,在实践中,它的行为完全不同于我的预期.
我的日志依赖项目前如下所示:
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-bom</artifactId>
            <version>2.9.1</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
<dependencies>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.25</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-slf4j-impl</artifactId>
    </dependency>
Run Code Online (Sandbox Code Playgroud)
我注意到commons-logging.jar由于某种原因它仍然在我的类路径中。我应该排除它还是不会引起任何问题?
到目前为止我没有注意到任何问题,但我仍然想知道那个罐子是否仍然会以某种方式引起问题。