我们有一个新的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。
所以真正的问题是:我们如何从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
答案 0 :(得分:0)
通过查看插件的文档为自己找到了解决方案。在exec-maven-plugin中,有一个选项可以排除插件的依赖关系。我在配置中添加了相同的功能!
<configuration>
<includePluginDependencies>false</includePluginDependencies>
</configuration>
Midhun