2017-04-12 9 views
0

もう少し詳しく理解しようとしています。 mavenは、アプリケーションの主な依存関係の依存関係をどのようにダウンロードできますか?このjarファイルのダウンロードをMavenの際mavenは、アプリケーションがビルドする主な依存関係の依存関係をどのように解決しますか?

<dependency> 
    <groupId>org.apache.hadoop</groupId> 
    <artifactId>hadoop-hdfs</artifactId> 
    <version>2.7.0</version> 
    <scope>provided</scope> 
</dependency> 

は今、それは同様にこのjarファイルの依存関係をダウンロードします。私のアプリケーションを想定した例では、このような主要な依存関係を持っています。例えば、以下のスクリーンショットを参照してください。

enter image description here

として見ることができる

は、Mavenのは、HadoopのHDFS--2.7.0.jarをダウンロードしただけでなく、すべてのそれは依存関係。

ここで私の質問は、 "トップレベル"依存関係の依存関係がどのようになっているかを知ることです。この場合、 "トップレベル"依存関係はhadoop-hdfsです。このため?

私はHadoopの-HDFSのため.m2 /リポジトリーにだけでなく、これを参照してください。

enter image description here

私は.pomファイルを開いて、内容は(一部)は次のとおりです。

<project> 
    .... 

    <groupId>org.apache.hadoop</groupId> 
    <artifactId>hadoop-hdfs</artifactId> 
    <version>2.7.0</version> 
    <description>Apache Hadoop HDFS</description> 
    <name>Apache Hadoop HDFS</name> 
    <packaging>jar</packaging> 

    <dependencies> 
     <dependency> 
      <groupId>org.apache.hadoop</groupId> 
      <artifactId>hadoop-annotations</artifactId> 
      <scope>provided</scope> 
     </dependency> 

     <dependency> 
      <groupId>org.apache.hadoop</groupId> 
      <artifactId>hadoop-auth</artifactId> 
      <scope>provided</scope> 
     </dependency> 
    <dependencies> 

    ... 
</project> 

これはなんですか?hadoop-hdfs-2.7.0.pom?このファイルは、hadoop-hdfs-2.7.0.jarのためにダウンロードされる依存関係は何ですか?

これらの問題を解決する手助けがありますか?

答えて

0

まず、あなたが正しいことですが、hadoop-hdfs-2.7.0.pomはhadoopが依存するライブラリについてMaven に伝えます。しかし、プロジェクトの依存関係としてhadoop を使用する場合、mavenは hadoop-hdfs-2.7.0.pomを使用することに加えて、 依存関係のリストを完成させるために以下の戦略を使用します。

  1. 依存性は、依存関係のタグの下に、現在のプロジェクトでのグループID、成果物およびバージョンで指定された場合、それは最初 優先されます。これはあなたのプロジェクトにhadoop-hdfsが追加された方法です。
  2. 依存関係管理が優先されます。依存関係は、グループと成果物IDが依存関係タグ の下でのみ指定されていますが、同時に依存関係は dependencyManagementタグの下に定義されています。また、dependencyManagementタグはdependoManagementタグの下にある 好み。
  3. 依存関係の仲介が最後の優先順位をとります。依存関係は、依存関係の調停を使用して解決されます。あなたのケースでは、 依存関係はhadoop-hdfs-2.7.0.pom内で言及されています( 依存関係「hadoop-hdfs」がそれを必要とするので)間接的にこれらの依存関係に依存しており、このプロセスは続行します すべての子依存関係が解決されるまで繰り返します。

注:依存関係を除外し、 を任意に1つマークし、依存関係のリストをインポートするなどの他の機能もあります。しかし、それらはまばらに として使用されます。例と詳細については、以下URL

に見出すことができる[https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Management][1]

関連する問題