У нас есть новый проект 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.
- maven-jar-plugin - понизив его с 2,6 до 2,4, добился цели
- maven-failsafe-plugin & maven-resources-plugin - мы не смогли найти способ с этим плагином. Обновление / понижение не сработало (или, может быть, мы не смогли найти точную используемую версию)
Итак, настоящий вопрос: как мы можем исключить банку slf4j-jdk14 из плагинов maven?
Испытано следующее и, похоже, оно не работает:
<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>
Кроме того, поиск в Google не сильно помог. Любой указатель будет высоко ценится.
Спасибо,
Midhun