2016-01-14 4 views
2

Я хочу исключить common-logging из spring-core, но spring-core является транзитивной зависимостью для spring-context. Я сделал это следующим образом, но мне кажется, что есть более правильный путь. Что это???Исключение зависимостей Maven от транзитивной зависимости весеннего контекста

 <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context</artifactId> 
      <exclusions> 
       <exclusion> 
        <groupId>org.springframework</groupId> 
        <artifactId>spring-core</artifactId> 
       </exclusion> 
      </exclusions> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-core</artifactId> 
      <exclusions> 
       <exclusion> 
        <groupId>commons-logging</groupId> 
        <artifactId>commons-logging</artifactId> 
       </exclusion> 
      </exclusions> 
     </dependency> 
+1

я хочу использовать SLF4J по log4j http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#overview- logging-slf4j – viavad

+0

Вы все еще можете использовать 'sfl4j' (я использую log4j с пружиной); ничто не останавливает вас. Однако, чтобы использовать весну в проекте, вам понадобится 'spring-core', который требует' commons-logging'. Включите его, но не используйте его самостоятельно. –

+1

@William Callahan: Посмотрите на [Bridging legacy APIs] (http://www.slf4j.org/legacy.html). – dur

ответ

4

Вы можете исключить транзитивные зависимости, см Introduction to the Dependency Mechanism:

  • Исключенные зависимости - Если проект X зависит от проекта Y, и проект Y зависит от проекта Z, владелец проекта X может явно исключить проект Z как зависимость, используя элемент «исключение».

Пример:

<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-context</artifactId> 
    <exclusions> 
     <exclusion> 
      <groupId>commons-logging</groupId> 
      <artifactId>commons-logging</artifactId> 
     </exclusion> 
    </exclusions> 
</dependency> 
+0

Проблема заключается в том, что 'commons-logging' не является опциональной_ зависимостью; как это можно исключить? (Если это было предоставлено где-то еще?) –

+1

@William Callahan: Вы должны заменить его или вы должны знать, что вы никогда не используете функциональность, которая зависит от удаленной зависимости. – dur