以编程方式获取Maven工件

Nag*_*gyI 12 java api dependencies maven aether

我正在寻找一个可用于从远程存储库中检索Maven工件的Java API.到目前为止我找到了Eclipse Ather,但它看起来很复杂,因此我需要更简单的东西.

我需要的是:

  • 我必须指定远程Maven存储库的位置
  • 我喜欢根据它的groupId + artifactId +版本获取工件
  • API必须提供工件的当前远程版本(考虑定期构建的SNAPSHOT工件,以便它们在其版本中具有生成的部分)
  • 返回工件的位置,首选HTTP URL(我将使用例如Apache HTTP Client自己获取它)
  • 可选地,检索作为所请求的工件的依赖的工件.

yeg*_*256 10

jcabi-aether可以帮到你(我是开发人员).它是Aether的简单包装器,可以让您找到Maven工件的所有传递依赖项:

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

因此,您需要提供的所有内容是:

  • 本地仓库位置,作为目录名称
  • 存储库列表(MavenProject#getRemoteRepositories())
  • 神器的Maven坐标
  • Maven范围寻找

找到的每个依赖项的绝对路径都可以获得 Artifact#getPath()