2009-05-19 31 views
4

是否有一个maven客户端不是mvn(maven发行版中包含的二进制文件)我可以用来从maven存储库中下拉一个工件而不使用pom吗?我想使用一个Maven仓库作为我们的操作团队获取构建的回购(包括 构建的快照),但我不希望他们不得不乱用编写poms并在其中声明依赖关系。理想情况下,我正在寻找一个cli客户端,我只需传入一个repo url并协调并下载给定的工件即可。这样的事情是否存在?还是我最好为此编写一次性脚本?实用工具从maven回购没有mvn/poms下载工件

+0

我相信这是api whaley指的是http://nexus.sonatype.org/nexus-faq.html#25 – 2010-07-30 21:22:53

回答

4

使用Nexus。它提供了一个其他团队可以用来下载工件的Web界面。 http://nexus.sonatype.org/

+0

我已经在使用Nexus,并且我刚刚发现了它们的url API,用于放下基于工件的url在坐标上。其中一位联系开发者昨天在他们的irc频道上向我通报了这件事。谢谢你的答案。 – whaley 2009-05-21 16:18:52

3

使用maven embedder。更重要的是,使用Maven嵌入器内部的功能来解析和下载罐子。尽管如果你只是想写一个简单的CLI,仓库结构并不复杂,你可以很容易地编写一个脚本,该脚本使用maven repo url,工件ID,组ID和版本来生成jar的完整URL。

0

从技术上说,存储库是通过HTTP访问的,所以给定存储库位置,工件和坐标时,应该可以为操作团队提供可在任何浏览器中打开的工件的URL。

+0

由于存储库中的实际工件文件名具有时间戳,我希望它们能够以编程方式拉下任何工件,所以会得到一些快照。我已经在使用nexus了,结果他们已经有了api。 – whaley 2009-05-21 16:19:54

+0

Gotcha - 很好的了解nexus – 2009-05-21 17:15:04

0

想想大同URL它可以让你使用普通的URL来引用行家文物,像这样:

 
mvn:groupId/artifactId/version 

PAX URL Website更多信息(MVN协议处理程序)。

托尼

7

我看到3种简单的选择:

  1. 只需发送一个链接指向你的神器在你的仓库,并让他们使用自己的浏览器。
  2. 安装和使用wgetwget http://path/to/artifact.extension)。
  3. 安装和使用mvn dependency:get(需要mvn不需要需要pom.xml,请参阅this answer了解更多详情)。
1

这是我们如何做到在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 
); 

所有你需要提供这个LIB是1)远程仓库的列表,2)本地回购的位置,和3)工件的Maven坐标。图书馆使用Sonatype的Apache Aether