11

プロジェクトのルートから始まる依存関係ツリー全体とその poms を取得しようとしています。ファイル システムに既に存在する POM から始めていますが、リポジトリから依存関係の poms を取得する方法がわかりません。

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

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()); 
}           
4

2 に答える 2

4

実際、あなたは依存関係を読むのにかなり近づいていました。不足していたのは次のとおりです。

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());
} 

これは依存関係ツリーを取得しませんが、見つかった依存関係に対して繰り返すことができます。

于 2014-12-26T17:16:42.513 に答える
1

残念ながら、それはそれほど些細なことではありません:-)ただし、いくつかのアドバイスを与えることができます(中央リポジトリからのアーティファクトのみが必要であることを考慮して)。

Github で見つけた素晴らしいサンプル コードを次に示します。別の方法として、中央リポジトリの REST API を使用することもできます。これをプログラムで行う方法の例を次に示します。

ところで、依存関係のみが必要な場合は、maven-dependency-pluginを直接使用することもできます (これは、eg で呼び出されますmvn dependency:tree-例については、このスレッドを参照してください)。

おそらくあなたの方法もうまくいくでしょうが、いくつか欠けている部分が必要だと思います.

于 2012-07-25T21:42:06.427 に答える