2016-09-07 10 views
2

vaadin-client-compiler依存関係を私のvaadinアプリケーションpomのprovidedスコープ依存として追加しました。提供されたスコープの依存関係からの推移的依存関係

私が読んだところでは、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スコープ依存の依存関係は、私のWebアプリケーションの依存関係になったのはなぜですか?

+0

jarファイルは利用可能ですか最終パッケージには? – VinayVeluri

+0

@VinayVeluri、はい。私が言及したように、依存性ジャーは 'WEB-INF/lib'で利用できます。 –

+0

'提供する前にあなたのWebアプリケーションを構築したのでしょうか? 'mvn clean package'を実行しようとするとどうなりますか、libディレクトリに表示されますか? – Morfic

答えて

1

実際、公式Maven Dependency Mediationによると、provided範囲は下記のように、その推移的依存関係にもたらす:

  • 推移の依存関係をcompile範囲で>providedスコープとして取得されます。
  • providedの推移的な依存関係は無視されます。
  • Transitiv runtime範囲におけるE依存性は>無視>test範囲にprovidedスコープとして
  • 推移的依存関係を取り出すことになる

はしたがって、provided依存性の推移的依存関係のいずれか無視されるか、並びに、そのようprovidedとしてインポートさ最終パッケージの一部はなしwar

サンプルプロジェクトに以下の依存関係を追加する:

mvn dependency:tree -Dincludes=com.vaadin 

を私たちは、出力の一部として持っています:

<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 

マニュアルと完全に一致します。

<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にその推移依存関係の1つの範囲をオーバーライドしています。

再実行し、我々は持っているだろう、前のコマンドを:

意味
[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.xmlmvn help:effective-pom -Doutput=full-pom.xmlを実行する階層内の自分の親ポンポンまたは任意のポンポンがそうかどうかは任意のdependencyManagementセクション

  • チェックは、間違いなく
  • チェックに役立つだろう定義するかどうかを

    • チェックアクティブなプロファイルがビルドに影響を与えるかどうかは、mvn help:active-profilesも実行されます
  • +0

    @LahiruChandimaあなたはこの問題を修正しましたか?この回答は役に立ちましたか? –

    関連する問題