Arquillian 测试:无法从嵌入式 glassfish 中删除对 slf4j 的依赖
Arquillian testing: cannot remove dependencies to slf4j from the embedded glassfish
我正在一个多 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 的依赖的正确方法应该是什么?
不,你不能。
因为 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
也没有任何依赖性。这就是为什么你不能通过依赖项排除来排除它的原因。
我正在一个多 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 的依赖的正确方法应该是什么?
不,你不能。
因为 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
也没有任何依赖性。这就是为什么你不能通过依赖项排除来排除它的原因。