2011-03-02 2 views

답변

0

다른 사람들이 말했듯이 provided을 범위로 사용해야합니다. 제거해야 할 jar가 프로젝트의 종속성이 아니라면 (즉, transient 종속성), 빌드로 가져 오는 모든 항목에서 제외해야합니다. 당신은 실제로 컴파일시 해당 클래스를 필요로하는 경우, 당신이해야 provided로 다시 포함 : 모든

<dependency> 
     <!-- this dependency has javax.activation as a dependency --> 
     <groupId>blah.groupId</groupId> 
     <artifactId>blah.artifactId</artifactId> 
     <version>blah.version</version> 
     <exclusions> 
      <exclusion> 
       <groupId>javax.activation</groupId> 
       <artifactId>activation</artifactId> 
      <exclusion> 
     </exclusions> 
    </dependency> 

    <!-- only necessary if this jar is needed at compile-time --> 
    <dependency> 
     <groupId>javax.activation</groupId> 
     <artifactId>activation</artifactId> 
     <version>1.1.1</version> 
     <scope>provided</scope> 
    </dependency> 
+0

첫째, 답변 주셔서 감사합니다, 나는 그냥 사용 없이 를 사용하여 가지고 당신이 whote로 인해 : "제거해야 할 jar가 프로젝트의 종속성이 아니라면 (즉, 일시적인 종속성), 제외해야합니다 ..." – ricardo

+0

예, '제공됨'으로 다시 가져 오기만하면됩니다. 당신은 실제로 컴파일 시간에 그 의존성에있는 클래스들을 필요로한다. 그렇지 않으면 그냥 그대로 두십시오. –

+0

좋습니다. 이제 이해했습니다 :) – ricardo

1

사용 provided을 정의 곳 :

나는 약 Excluding a module (단지 jarModule에 대한의 WebModule 변경)을 especification를 따라하려고하지만,이 오류 성공하지 못했습니다.

<dependency> 
    <groupId>javax.activation</groupId> 
    <artifactId>activation</artifactId> 
    <version>1.1.1</version> 
    <scope>provided</scope> 
</dependency> 
1

scopeprovided으로 설정하십시오. Maven은 여전히 ​​컴파일 타임 클래스 패스에 종속성을 추가하지만 최종 WAR에는 추가하지 않습니다.

관련 문제