【问题标题】:Arquillian testing: cannot remove dependencies to slf4j from the embedded glassfishArquillian 测试:无法从嵌入式 glassfish 中删除对 slf4j 的依赖项
【发布时间】:2016-07-02 20:03:43
【问题描述】:

我正在一个多 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 的依赖?

【问题讨论】:

    标签: maven slf4j jboss-arquillian maven-dependency


    【解决方案1】:

    不,你不能。

    因为glassfish-embedded-all-3.1.2.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,而且每个必需的包都在里面。

    如果您查看它的pom,也没有对slf4j 的任何依赖。这就是为什么你不能通过依赖排除来排除它的原因。

    【讨论】:

    • 找到它,切换到 glassfish 4,现在一切正常。再次感谢,你的回答让我从我的决议树上剪下一个大树枝撞到墙上。
    • 嵌入式容器之美 :)
    猜你喜欢
    • 1970-01-01
    • 2012-12-10
    • 2013-07-22
    • 1970-01-01
    • 2018-05-10
    • 1970-01-01
    • 2020-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多