Тестирование Arquillian: невозможно удалить зависимости от slf4j из встроенного glassfish
Я создаю набор тестов интеграции Java Java EE с Arquillian и Junit в проекте Multi Pom Maven. В основную часть я включаю как встроенную стеклянную рыбку, требуемую для arquillian, так и библиотеку slf4j, необходимую для моего проекта. Встроенная стеклянная рыба содержит ссылку на сам slf4j, поэтому я пытаюсь удалить ее, указав исключение внутри зависимости, как указано в http://www.slf4j.org/codes.html.
<dependency>
<groupId>org.jboss.arquillian.container</groupId>
<artifactId>arquillian-glassfish-embedded-3.1</artifactId>
<version>1.0.0.CR4</version>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.glassfish.main.extras</groupId>
<artifactId>glassfish-embedded-all</artifactId>
<version>3.1.2</version>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.19</version>
<scope>test</scope>
</dependency>
Однако всякий раз, когда я запускаю тесты, зависимость от slf4j волшебным образом появляется
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/C:/Users/panda/.m2/repository/org/glassfish/main/extras/glassfish-embedded-all/3.1.2/glassfish-embedded-all-3.1.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/C:/Users/panda/.m2/repository/org/slf4j/slf4j-simple/1.5.10/slf4j-simple-1.5.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
Вероятно, я что-то упустил... Какой должен быть правильный подход для удаления зависимости от slf4j, содержащейся во встроенном фляге glassfish?
1 ответ
Нет, ты не можешь.
Так как glassfish-embedded-all-3.1.2.jar
это Uber Jar, который содержит org/slf4j/*
внутри.
Вы можете извлечь свой C:/Users/panda/.m2/repository/org/glassfish/main/extras/glassfish-embedded-all/3.1.2/glassfish-embedded-all-3.1.2.jar
чтобы увидеть это дальше. Не только slf4j
но также все необходимые пакеты находятся внутри.
Если вы посмотрите на его пом, нет никакой зависимости от slf4j
также. Это причина, почему вы не можете исключить это через исключение зависимости.