Исключить slf4j-jdk14 из плагина maven-failsage- - PullRequest
0 голосов
/ 09 мая 2018

У нас есть новый проект 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.

  1. maven-jar-plugin - понизив его с 2,6 до 2,4, добился цели
  2. 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

1 Ответ

0 голосов
/ 09 мая 2018

Нашел решение для себя, посмотрев документы по плагину. В exec-maven-plugin есть возможность исключить зависимости плагинов. Я поставил то же самое в конфигурации, и это сработало!

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

Midhun

...