是否有一个不是mvn的maven客户端(maven发行版中包含的二进制文件)我可以用来从maven存储库中下载一个工件而不使用pom?我想使用maven存储库作为我们的运营团队的回购来获取构建(包括的快照) 但是我不希望他们不得不乱写pom并在其中声明依赖关系。理想情况下,我正在寻找一个cli客户端,我可以通过repo url传递并协调和下载给定的工件。这样的事情是存在还是我最好为此写一个一次性的脚本?
答案 0 :(得分:7)
我看到3个简单的选择:
wget
(wget http://path/to/artifact.extension
)。mvn dependency:get
(需要mvn
,但不需要pom.xml
,有关详细信息,请参阅this answer。答案 1 :(得分:4)
使用Nexus。它提供了一个Web界面,其他团队可以使用它来下载工件。 http://nexus.sonatype.org/
答案 2 :(得分:3)
使用maven embedder。更重要的是,使用maven嵌入器内部的功能来解析和下载jar。虽然如果您只是想编写一个简单的CLI,但存储库结构并不复杂,您可以轻松编写一个脚本,该脚本将获取maven repo url,工件ID,组ID和版本以生成jar的完整URL。
答案 3 :(得分: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。
答案 4 :(得分:0)
从技术上讲,存储库是通过HTTP访问的,因此在给定存储库位置,工件和坐标的情况下,应该可以为您的运营团队提供他们可以在任何浏览器中访问的工件的URL。
答案 5 :(得分:0)
考虑 Pax网址,它允许您使用普通网址来引用maven工件,如下所示:
mvn:groupId/artifactId/version
有关详细信息,请参阅PAX URL Website(MVN协议处理程序)。
托尼