如果我有Maven工件信息(GroupId,ArtifactId,Version),我如何以编程方式(使用Java)从我的本地存储库中检索该工件?
具体来说,我需要能够连接到Maven资源库并创建/检索org.apache.maven.artifact.Artifact,以便我可以检索与工件相关联的文件。
我已经研究过m2e源代码,但是MavenImpl.java(它提供了Artifact解析)比我需要的更复杂,并且很难理解与存储库的连接是如何工作的。
答案 0 :(得分:8)
答案 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。