【问题标题】:Exclude slf4j-jdk14 from maven-failsage-plugin从 maven-failsage-plugin 中排除 slf4j-jdk14
【发布时间】:2018-10-19 15:27:12
【问题描述】:

我们有一个新的 Maven 项目,当我们使用 exec-maven-plugin 通过 maven 配置文件启动我们的进程时,我们遇到了一个问题。进程启动失败并出现以下错误:

java.lang.IllegalArgumentException: LoggerFactory is not a Logback LoggerContext but Logback is on the classpath. Either remove Logback or the competing implementation (class org.slf4j.impl.JDK14LoggerFactory loaded from file:/C:/Users/xxxxxxxxxxxx/.m2/repository/org/slf4j/slf4j-jdk14/1.5.6/slf4j-jdk14-1.5.6.jar). If you are using WebLogic you will need to add 'org.slf4j' to prefer-application-packages in WEB-INF/weblogic.xml Object of class [org.slf4j.impl.JDK14LoggerFactory] must be an instance of class ch.qos.logback.classic.LoggerContext

当我们尝试删除对 logback-classic jar 的所有引用时,该过程开始正常,尽管我们失去了日志记录功能,因为它归结为 SLF4J 的基本日志记录。

因此,所有对 slf4j-jdk14 的引用都已从 POM 中删除,并且依赖关系树也已得到验证。然后发现maven插件拉入了slf4j-jdk14 jar。

  1. ma​​ven-jar-plugin - 将它从 2.6 降级到 2.4 就可以了
  2. ma​​ven-failsafe-plugin & maven-resources-plugin - 我们找不到使用这些插件的方法。升级/降级不起作用(或者我们可能找不到确切的可用版本)

所以真正的问题是:我们如何从 maven 插件中排除 slf4j-jdk14 jar?

已尝试以下方法,但似乎不起作用:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>${maven-failsafe-plugin.version}</version>
<executions>
    <execution>
    <id>integration-test</id>
    <configuration>
        <includes>
        <include>**/*IT.java</include>
        </includes>
    </configuration>
    <goals>
        <goal>integration-test</goal>
        <goal>verify</goal>
    </goals>
    </execution>
</executions>
<dependencies>
    <dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.5.6</version>
    <exclusions>
        <exclusion>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-jdk14</artifactId>
        </exclusion>
    </exclusions>
    </dependency>
</dependencies>
</plugin>

此外,谷歌搜索也没有多大帮助。任何指针将不胜感激。

谢谢, 弥敦道

【问题讨论】:

  • Maven 正在下载 slf4j-jdk 的 1.5.6 版 - 因此该版本已被用于排除。我不太确定 maven-failsafe-plugin 使用的是哪个版本的 slf4j。

标签: maven-3 slf4j


【解决方案1】:

通过查看插件的文档为自己找到了解决方案。在 exec-maven-plugin 中,有一个选项可以排除插件的依赖关系。我在配置中输入了相同的内容,它起作用了!

<configuration>
    <includePluginDependencies>false</includePluginDependencies>
</configuration>

弥敦道

【讨论】:

    猜你喜欢
    • 2013-04-01
    • 2021-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多