使用Maven Java API从存储库中检索Maven工件

时间:2012-07-26 17:14:42

标签: java api maven maven-plugin aether

如果我有Maven工件信息(GroupId,ArtifactId,Version),我如何以编程方式(使用Java)从我的本地存储库中检索该工件?

具体来说,我需要能够连接到Maven资源库并创建/检索org.apache.maven.artifact.Artifact,以便我可以检索与工件相关联的文件。

我已经研究过m2e源代码,但是MavenImpl.java(它提供了Artifact解析)比我需要的更复杂,并且很难理解与存储库的连接是如何工作的。

3 个答案:

答案 0 :(得分:8)

您可能希望查看Aether。有关示例,请参阅Wiki

答案 1 :(得分:0)

您可以根据给定信息构建网址并下载文件(注意,将'.'中的<groupId>替换为'/'):

<repositoryUrl>/<groupId>/<artifactId>/<version>/<artifactId>-<version>.<type>

答案 2 :(得分: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中的Apache Aether