2015-01-09 2 views
3

프로젝트 B와 JUnit-11에 의존하는 프로젝트 A를 개발하고 있다고 가정 해 보겠습니다.Maven 재귀 의존성 배제

A -> junit-11 and B 

프로젝트 B는 프로젝트 C 및 JUnit-8에 종속됩니다. 하지만 이미 패키지되어 있고 내용을 수정하는 데 아무런 통제권이 없습니다.

B -> junit-8 and C 

프로젝트 C는 jUnit-8에도 종속됩니다.

이제 문제는 프로젝트 (프로젝트 A)를 빌드 할 때 jUnit-8이 컴파일을 중단시키는 것입니다. 내 pom.xml에서이를 정의 할 때 jUnit-8에 대한 프로젝트 B의 종속성을 제외 할 수 있지만 프로젝트 C의 종속성에 전파하지는 않습니다. 결과적으로 jUnit-8은 여전히 ​​다운로드되고 프로젝트가 중단됩니다.

Project A (My Project) :pom.xml: 
<dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.11</version> 
    </dependency> 

    <dependency> 
     <groupId>B</groupId> 
     <artifactId>B</artifactId> 
     <version>1.0</version> 
     <exclusion> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId>  
     </exclusion> 

    </dependency> 
</dependencies> 

Project B (Existing project):pom.xml: 
<dependencies> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>4.8</version> 
     </dependency> 
     <dependency> 
      <groupId>C</groupId> 
      <artifactId>C</artifactId> 
      <version>1.0</version> 
     </dependency> 
</dependencies> 

Project C (Existing project):pom.xml: 
<dependencies> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>4.8</version> 
     </dependency> 
</dependencies> 

모든 하위 종속에서의 JUnit-8 제외 재귀 배제를 정의하는 방법에 대한 조언 : 여기

은 종래의 pom.xml입니까?

+1

그것은'' 시험에없는 그 선언의 JUnit 종속성을 가지고 이상한입니다. –

+0

글쎄, 그들은 테스트 범위와 함께 선언하지만 여기서는이를 간단하게 제거했습니다. 게다가 테스트 범위에만 국한되지 않는 다른 종속성과 비슷한 문제가 있습니다. – reza

답변

0

아마 당신이 당신의 pom.xml에 Dependency Management를 사용해야합니다

+3

제외를 허용하는 종속성 관리의 특정 기능을 강조 할 수 있습니다. – xyz