从maven-failsage-plugin

时间:2018-05-09 13:26:47

标签: maven-3 slf4j

我们有一个新的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. maven-jar-plugin - 将它从2.6降级到2.4就可以了。
  2. maven-failsafe-plugin& maven-resources-plugin - 我们找不到这些插件的方法。升级/降级无效(或者我们无法找到确切的可用版本)
  3.   

    所以真正的问题是:我们如何从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>
    

    此外,谷歌搜索没有多大帮助。任何指针都会非常感激。

    谢谢, Midhun

1 个答案:

答案 0 :(得分:0)

通过查看插件的文档为自己找到了解决方案。在exec-maven-plugin中,有一个选项可以排除插件的依赖关系。我在配置中添加了相同的功能!

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

Midhun