2016-09-07 13 views
2

내 vaadin 응용 프로그램 pom에 provided 범위 종속성으로 vaadin-client-compiler 종속성을 추가했습니다.제공된 범위 종속성에서 오는 일시적인 종속성

내가 읽은 것처럼 provided 종속성은 전이하지 않으므로 vaadin-client-compiler의 종속성이 내 webapp의 종속성이되어야합니다.

그러나 내 WEB-INF/lib 디렉토리 내에 vaadin-client-compiler (commons-lang3-3.1.jar)의 종속성을 발견했습니다.

또한 이러한 종속성은 mvn dependency:tree 출력에도 표시됩니다.

[INFO] | +- javax.validation:validation-api:jar:1.0.0.GA:compile 
[INFO] | \- javax.validation:validation-api:jar:sources:1.0.0.GA:compile 
[INFO] +- com.vaadin:vaadin-client-compiler:jar:7.6.4:provided 
[INFO] | +- com.vaadin:vaadin-sass-compiler:jar:0.9.13:compile 
[INFO] | | \- com.yahoo.platform.yui:yuicompressor:jar:2.4.8:compile 
[INFO] | |  \- rhino:js:jar:1.7R2:compile 
[INFO] | +- commons-collections:commons-collections:jar:3.2.2:compile 
................................................ 
................................................. 
[INFO] | +- commons-codec:commons-codec:jar:1.8:compile 
[INFO] | +- commons-io:commons-io:jar:2.4:compile 
[INFO] | +- org.apache.commons:commons-lang3:jar:3.1:compile 

질문하십시오 provided 범위 의존성의 의존성이 내 웹 애플리케이션의 의존성이 된 이유는 무엇?

+0

jar 파일을 사용할 수 있습니까? 최종 패키지에? – VinayVeluri

+0

@VinayVeluri, 예. 앞에서 언급했듯이 'WEB-INF/lib'에서 의존성 병을 사용할 수 있습니다. –

+0

웹 앱을'제공 '하기 전에 만들었습니까? 'mvn clean package'를 실행하려고하면 어떻게됩니까? lib 디렉토리에 표시됩니까? – Morfic

답변

1

, 공식 Maven Dependency Mediation에 따르면, provided 범위가 이적 종속성을 가져올 것이다 : 전체 진실은 표에 표시됩니다

  • 이적 종속성을 compile 범위>provided 범위로 가져옵니다.
  • provided의 전이 종속성> 무시
  • Transitiv runtime 범위 E 의존성> 무시>test 범위 provided 범위로
  • 트랜 의존성 페치 될

는 따라서, provided 의존성 전이 종속성 중 무시 될 또는 웰 등 provided로 반입 최종 포장 된 부분이 없습니다 war. 실행

<dependencies> 
    <dependency> 
     <groupId>com.vaadin</groupId> 
     <artifactId>vaadin-client-compiler</artifactId> 
     <version>7.6.4</version> 
     <scope>provided</scope> 
    </dependency> 
</dependencies> 

는 다음에 이어질 것인가, :

[INFO] \- com.vaadin:vaadin-client-compiler:jar:7.6.4:provided 
[INFO] +- com.vaadin:vaadin-shared:jar:7.6.4:provided 
[INFO] +- com.vaadin:vaadin-server:jar:7.6.4:provided 
[INFO] +- com.vaadin:vaadin-client:jar:7.6.4:provided 
[INFO] +- com.vaadin:vaadin-sass-compiler:jar:0.9.13:provided 
[INFO] \- com.vaadin:vaadin-client-compiler-deps:jar:1.2.0:provided 
:

mvn dependency:tree -Dincludes=com.vaadin 

우리는 출력의 일부로서 것

추가 샘플 프로젝트에 다음과 같은 의존성

설명서와 완벽하게 일치합니다.

<dependencyManagement> 
    <dependencies> 
     <dependency> 
      <groupId>com.vaadin</groupId> 
      <artifactId>vaadin-server</artifactId> 
      <version>7.6.4</version> 
      <scope>compile</scope> 
     </dependency> 
    </dependencies> 
</dependencyManagement> 

참고 : 우리는 pom.xml 파일에 추가하는 경우 다음 그러나

, 우리가 compile로의 이적 종속성 중 하나의 범위를 재정의.

다시 실행 우리가 가진 것 이전 명령을 :

의미
[INFO] \- com.vaadin:vaadin-client-compiler:jar:7.6.4:provided 
[INFO] +- com.vaadin:vaadin-shared:jar:7.6.4:compile 
[INFO] +- com.vaadin:vaadin-server:jar:7.6.4:compile 
[INFO] +- com.vaadin:vaadin-client:jar:7.6.4:provided 
[INFO] +- com.vaadin:vaadin-sass-compiler:jar:0.9.13:compile 
[INFO] \- com.vaadin:vaadin-client-compiler-deps:jar:1.2.0:provided 

: 이적 의존성 vaadin-server 여전히 vaadin-client-compiler에 의해 반입되어 있지만, 그 범위는 의존성 관리에 따라 compile에서 지금이다. 따라서

, 당신이해야 :

  • 확인하여 pom.xml는 정의 여부를 어떤 dependencyManagement 섹션
  • 확인 부모의 치어 또는 계층 구조에있는 치어 확실히
  • 확인 도움이 될 mvn help:effective-pom -Doutput=full-pom.xml을 실행, 그렇게 할 것입니다 여부 활성 프로파일이 빌드에 영향을 주는지 여부도 mvn help:active-profiles도 도움이 될 것입니다.
+0

@LahiruChandima이 문제를 해결 했습니까? 이 대답이 도움이 되었습니까? –