Исключить slf4j-jdk14 из плагина maven-failsage-
У нас есть новый проект 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 jar из плагинов 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 не сильно помог. Любой указатель будет высоко ценится.
Спасибо, мидхун
1 ответ
Нашел решение для себя, посмотрев документы по плагину. В exec-maven-plugin есть возможность исключить зависимости плагинов. Я поставил то же самое в конфигурации, и это сработало!
<configuration>
<includePluginDependencies>false</includePluginDependencies>
</configuration>
Midhun