2012-07-25 23 views
9

プロジェクトのルートから始まる依存関係ツリー全体とそのポームを取得しようとしています。私は既にファイルシステムに存在するPOMから始めていますが、リポジトリから依存関係ポームを取得する方法がわかりません。MavenのJava APIを使用してMaven Artifact POMにアクセスするにはどうすればよいですか?

次のコードを使用して依存関係リストにアクセスしています。リストから私はアーティファクトに関するすべての情報を持っています。私はリポジトリにアクセスする方法がわかりません。

FileReader reader = null; 
Model model = null; 
MavenXpp3Reader mavenreader = new MavenXpp3Reader(); 

File pomfile = new File("pom.xml"); 

model.setPomFile(pomfile); 
MavenProject project = new MavenProject(model); 

List<Dependency> deps = project.getDependencies(); 

// Get dependency details 
for (Dependency d: deps) {   
    System.out.print(d.getArtifactId()); 
    System.out.print(":"); 
    System.out.println(d.getVersion()); 
}   

答えて

1

Unfotunatelyそれは(あなたが唯一の中央リポジトリから成果物を必要とすることを考慮に入れて)けれども、私はあなたにいくつかのアドバイスを与えることができます:-)その些細なことではありません。

ここは素晴らしいですexample code私はGithubで見つけました。代わりにREST API of the central repoを使用することもできます。ここに例がありますdo that programmaticallyに。

ご協力ありがとうございます。maven-dependency-pluginを直接使用することもできます(例:mvn dependency:treethis threadを参照)。

おそらくあなたの方法も使えますが、欠落している部分が必要だと思います。

+0

私は実際には、Maven APIを使用してローカルリポジトリ(中央リポジトリではなく)からプログラムを検索しています。私はファイルシステムを通じてローカルリポジトリを探すことができましたが、これはどのユーザーでも動作する必要があるため、APIがより適切であると考えました。 – davdic

+0

@rlegendiあなたのユースケースはわかりませんが、一部の公開メインライブラリの依存関係だけが必要な場合は、VersionEye API(https://www.versioneye.com/api?version=v2)を使用できます。これはREST JSON APIで、使いやすいです。 –

+0

@RobertReiz @ davdicへのあなたのコメントに対処しませんでしたか? :-)とにかく、リンクのためのthxが、それは商用とベータ製品のようです。 – rlegendi

2

実際、あなたはかなり依存関係を読んでいました。欠けていたことすべてがあった。

Model model = mavenreader.read(new FileReader(pomFile)); 

全例:

MavenXpp3Reader mavenreader = new MavenXpp3Reader(); 

File pomfile = new File("pom.xml"); 
Model model = mavenreader.read(new FileReader(pomFile)); 

List<Dependency> deps = model.getDependencies(); 

for (Dependency d: deps) {   
    System.out.print(d.getArtifactId()); 
} 

これはあなたの依存関係ツリーを得ることはありませんが、あなたはあなたが見つけるの依存関係のためにそれを繰り返すことができます。

関連する問題