2012-02-24 11 views
0

m2e Eclipseプラグインをダウンロードして、それを気に入ってください!私は、プロジェクトの推移的な依存関係のすべてを解決するためにどのようなWebサービスが使用されているのだろうかと思います。依存関係グラフにMavenサービスを使用

私はそれがプロジェクトpom.xmlのうち、<dependency>のすべての要素を解析することで動作し、各推移の依存関係のためにMavenを照会するサービスを利用することを前提とし

基本的には、m2e~/.m2に保存されているローカルMavenキャッシュにデータを格納していますか?

答えて

2

プラグインは、Mavenコマンドラインprogam mvnと同じ働きをします。

Mavenのは、次のように

http://repo1.maven.org/maven2/

だから依存性を取ってMavenの中央からファイルをダウンロードしますデフォルトのリポジトリの設定を変更していないプロジェクトのPOMとMaven設定ファイルを仮定:

<dependency> 
    <groupId>log4j</groupId> 
    <artifactId>log4j</artifactId> 
    <version>1.2.16</version> 
</dependency> 

Mavenを次のURL規約(Maven2リポジトリレイアウト)を使用します。

<Repository URL>/<groupId>/<artifactId>/<version>/<artifactId>-<version>.<packaging> 
最初の2番目のファイルをダウンロードする際に、その 梱包要素モジュールのPOMは、使用するファイル名の拡張子を表示しますです

  1. http://repo1.maven.org/maven2/log4j/log4j/1.2.16/log4j-1.2.16.pom
  2. http://repo1.maven.org/maven2/log4j/log4j/1.2.16/log4j-1.2.16.jar

:2つのファイルをダウンロードするには

(デフォルトは "jar")。

最後のMavenを再帰的にどのようにjarが実際に私の `〜/ .m2`に表示されないので、POMに記載されている他の依存関係に関連付けられたPOMファイルを読み込み、(依存関係の依存関係)をダウンロードするために、他のどのモジュールを決める

+0

驚くばかりの答え - ありがとうマーク! Mavenはこれらのファイルを(ローカルに)どこにダウンロードしますか?私は 'm2e'が'〜/ .m2'を使っているのを知っています...しかし 'mvn'自体はどうですか? – IAmYourFaja

+1

ディレクトリ "〜/。m2/repositoryはローカルリポジトリと呼ばれていますが、これは他のMavenリポジトリから以前にダウンロードしたファイルのローカルキャッシュとして考えることができるので、効率が向上し、オフラインのMavenビルドが可能になります。同じ構成が理にかなっている –

3

通常のMaven依存関係解決プロセスを実行します。それぞれの依存関係について、推移的な依存関係を再帰的に解決します。 "サービス"は、設定されたMavenリポジトリからの依存関係のPOMのクエリです。

+0

ますディレクトリ?彼らはちょうど魔法のように自分自身を明らかにするか?ある時点で、 'm2e'はネットワークを介してMavenリポジトリに" hey!send me x "というシグナルを送り、ダウンロードが行われなければなりません。私はこのサービスがどのようなもので、どのようにそれに接続するのかを尋ねています。 – IAmYourFaja

+0

@AdamTannonこれは一般に、http://やfile://のような通常のURIです。[Mavenリポジトリ](http://maven.apache.org/guides/introduction/introduction-to-repositories.html)を参照してください。 )。特に興味深いことは何もありません。 GradleのようなMaven-alikesのようなものもあります。これらのメソッドは、同じ解像度メカニズムを使い、簡単に入手できます。 –

0

m2eが具体的にどのようにしているかわかりませんが、mvn dependency:treeを使ってコマンドラインで同じことをすることはできます。このコマンドは、さまざまな出力形式(text、dot、graphml、tgf)をサポートしています。 maven dependency plugin docsを参照してください。

関連する問題