Тестирование 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 также. Это причина, почему вы не можете исключить это через исключение зависимости.

Другие вопросы по тегам