2016-03-16 1 views
1

Я создаю набор тестов интеграции Java EE с аркиллианскими и junit в проекте multi pom maven. В главном помпе я включаю как встроенную стеклянную рыбу, требуемую аркиллианской, так и библиотекой slf4j, требуемую моим проектом. Вложенная стеклянная рыба содержит ссылку на slf4j сама, поэтому я пытаюсь удалить ее, указав исключение внутри зависимостей, как указано в http://www.slf4j.org/codes.html#multiple_bindings.Аркиллианское тестирование: не удается удалить зависимости от slf4j от встроенной стеклянной рыбы

<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 содержала в стеклянную вставку?

ответ

3

Нет, вы не можете.

Поскольку 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, но и все необходимые пакеты.

Если вы посмотрите на его pom, нет никакой зависимости от slf4j. Это причина, по которой вы не можете исключить ее из-за исключения зависимостей.

+0

Большое спасибо! и ... Черт ... абсолютно нужно обходное решение, чтобы все могло сработать ... – Gabber

+0

Нашел его, перешел на старую рыбку 4, теперь все работает. Еще раз спасибо, ваш ответ позволил мне вырезать из моего дерева разрешения большую ветку стучащей головой к стене. – Gabber

+1

Красота встроенных контейнеров :) –

Смежные вопросы