Arquillian测试:无法从嵌入的glassfish中删除对slf4j的依赖

时间:2016-03-16 18:34:40

标签: maven slf4j jboss-arquillian maven-dependency

我正在一个多pom maven项目中创建一个带有arquillian和junit的java EE集成测试套件。在主要的pom我包括arquillian所需的嵌入式glassfish和我的项目所需的slf4j库。嵌入的glassfish包含对slf4j本身的引用,所以我试图通过在http://www.slf4j.org/codes.html#multiple_bindings中指定的依赖项中指定排除来删除它。

<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.

可能我错过了什么......删除对glassfish嵌入式jar中包含的slf4j的依赖应该是什么样的正确方法?

1 个答案:

答案 0 :(得分:3)

不,你不能。

由于glassfish-embedded-all-3.1.2.jar是一个内部包含org/slf4j/*的超级jar。

您可以提取C:/Users/panda/.m2/repository/org/glassfish/main/extras/glassfish-embedded-all/3.1.2/glassfish-embedded-all-3.1.2.jar以进一步查看。不仅slf4j而且每个必需的包也在里面。

如果你查看它的pom,那么对slf4j也没有任何依赖。这是您无法通过依赖项排除将其排除的原因。