8

Mavenアーティファクト情報(GroupId、ArtifactId、Version)がある場合、プログラムで(Javaを使用して)ローカルリポジトリからそのアーティファクトを取得するにはどうすればよいですか?

具体的には、Mavenリポジトリに接続し、org.apache.maven.artifact.Artifactを作成/取得して、Artifactに関連付けられたファイルを取得できるようにする必要があります。

m2eソースコードを調べましたが、MavenImpl.java(アーティファクト解決を提供)は必要なものよりもはるかに複雑であり、リポジトリへの接続がどのように機能するかを理解するのは困難です。

4

3 に答える 3

9

あなたはおそらくエーテルを見たいと思うでしょ例については、 Wikiを参照してください。

于 2012-07-26T19:33:39.653 に答える
0

'.'指定された情報からURLを作成し、ファイルをダウンロードできます(注:の<groupId>をに置き換えてください'/')。

<repositoryUrl>/<groupId>/<artifactId>/<version>/<artifactId>-<version>.<type>
于 2012-07-26T20:02:22.453 に答える
0

これがjcabi-aetherでの方法です:

final File repo = this.session.getLocalRepository().getBasedir();
final Collection<Artifact> deps = new Aether(this.getProject(), repo).resolve(
  new DefaultArtifact("junit", "junit-dep", "", "jar", "4.10"),
  JavaScopes.RUNTIME
);

リモートリポジトリのリスト、ローカルリポジトリの場所、アーティファクトのMaven座標を提供します。名前が示すように、ライブラリはSonatypeのApacheAetherを使用します。

于 2012-10-28T12:37:21.837 に答える