2013-07-01 6 views
0

대형 멀티 모듈 프로젝트가 있습니다. 모듈 중 99 %는 특정 써드 파티 라이브러리 (A라고 부름)에 대한 의존성을 가지므로, A에 대한 의존성은 모든 모듈에 의해 상속 된 프로젝트 부모 POM &에 기록됩니다. 이러한 99 %의 경우 A는 런타임 환경 &의 일부로 제공되므로 종속성은 제공된대로 표시됩니다.Maven 종속성을 "상속받지"못하게하려면 어떻게해야합니까?

나는 자식 모듈 중 하나 (사실상 손자 인 경우) 에 A에 대한 의존성이 없어야합니다.이 모듈의 종속성 목록에서 A를 어떻게 제거 할 수 있습니까?

나는 combine.self="override"을 시도했지만 그 구조는 분명히 <dependencies> 요소에 허용되지 않습니다.

+0

난 당신이 무엇을 요구 할 수있는 방법이라고 생각하지 않습니다. 나는 당신이 A를 상속하지 말아야한다고 생각한다. (부모로부터 그것을 제거한다.) 모든 자식 모듈에서 A를 명시 적으로 선언해야한다. – BenjaminLinus

+0

@BenjaminLinus, 나는 많이 생각했다. 그것은 끔찍한 "수정"이지만 일어날 일은 아닙니다. 저는이 한 모퉁이의 경우를 해결하기 위해 300 개 이상의 모듈에서 의존성을 개별적으로 선언하지 않겠습니다. – carej

+0

나중에 들려요. 나는 그 중 하나를하고 싶지 않습니다. 또 다른 가능성은 1 % 하위 모듈에서 ""선언을 제거한 다음 부모로부터 상속받은 모든 내용을 구체적으로 선언하는 것입니다. 여전히 끔찍한 수정이지만 300+ 모듈을 만지는 것만큼 끔찍하지는 않을 것입니다. 그냥 생각. – BenjaminLinus

답변

1

dependencyManagement을 사용하고 필요없는 이슈의 종속성 제외를 추가하십시오.

이것은 나의 봄 종속성에서 commons-logging 제외에 매력으로 작동합니다

<dependencyManagement> 
    <dependencies> 

     <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-core</artifactId> 
     <version>${spring-framework.version}</version> 
     <exclusions> 
      <exclusion> 
      <artifactId>commons-logging</artifactId> 
      <groupId>commons-logging</groupId> 
      </exclusion> 
     </exclusions> 
     </dependency> 

    </dependencies> 
    </dependencyManagement> 
+0

전 이적 종속성을 제외하는 방법을 묻지 않습니다. 하나의 후손이 조상에 의해 직접 선언 된 종속성을 상속하지 못하도록하는 방법을 묻습니다. – carej

관련 문제