一个简单的命令行将远程maven2工件下载到本地存储库?


122

我有一个使用maven 2分发的库。该库的典型用户不使用maven来构建其应用程序,但可能对maven有点熟悉,并且可能已经安装了它。

我想记录一个“简单”的一行命令,他们可以使用该命令将我的库的工件下载到本地,~/.m2/repository而无需他们设置pom.xml来完成。

我以为有办法做到这一点,但在浏览了install:install-filedependency插件文档后,似乎找不到它。我尝试过类似的事情:

mvn install:install-file -DrepositoryId=java.net -Durl=http://download.java.net/maven/2/ -Dfile=robo-guice-0.4-20091121.174618-1.jar -DpomFile=robo-guice-0.4-20091121.174618-1.pom -DgroupId=robo-guice -DartifactId=robo-guice -Dversion=0.4-SNAPSHOT -Dpackaging=jar

但我认为我在树错了方向,因为看来安装插件用于将本地构建的文件复制到本地存储库中,而不是将远程工件下载到本地存储库中。

这是我要安装的工件:http : //download.java.net/maven/2/robo-guice/robo-guice/0.4-SNAPSHOT/

使用maven可以做到吗?



Answers:


168

Maven Dependency Plugin 2.1版开始,为此有一个dependency:get目标。为了确保您使用的插件版本正确,您需要使用“完全限定名称”:

mvn org.apache.maven.plugins:maven-dependency-plugin:2.1:get \
    -DrepoUrl = http://download.java.net/maven/2/ \
    -Dartifact = robo-guice:robo-guice:0.4-SNAPSHOT

对于显示如何安装依赖插件本身特别有用。
塞尔吉奥·阿科斯塔

2
Pascal,您能告诉我如何定义用户名和密码来访问存储库吗?user:password @ repourl的技巧不起作用。
伽柏Lipták

4
目标很好,但是如何定义要将文件复制到的目标目录?(和文件名)
domi

9
@domi(后代迟来的答案):使用“ -Ddest = path / to / my.jar”;否则,它将被复制到本地〜/ .m2 /存储库(看起来好像什么也没发生)。参见maven.apache.org/plugins/maven-dependency-plugin/…= example => mvn org.apache.maven.plugins:maven-dependency-plugin:2.5.1:get -DremoteRepositories = repo.maven.apache.org -Dartifact = org.apache.ant:ant:1.8.1 -Ddest = ant-1.8.1.jar(结果:当前目录中的ant-1.8.1.jar)
michael

3
谢谢!虽然,在您发布的文档的链接,还有Deprecated. Use remoteRepositoriesrepoUrl。请更新答案,也许是:)
周末

46

给他们一个琐碎的pom,并将这些jar列为依赖项和运行说明:

mvn dependency:go-offline

这会将依赖项拉到本地存储库。

一个更直接的解决方案是dependency:get,但是要键入的参数很多:

mvn dependency:get -DrepoUrl=something -Dartifact=group:artifact:version

好主意,尽管可以复制粘贴命令行更容易
emmby

如果我能想到一个,我会发布它。我不知道有什么插件可以满足您的要求。我知道该怎么写...
bmargulies

get魔力实际上希望-DrepoUrl在场,没有-DrepositoryUrl。关于类型的参数,没有魔术,您需要以某种方式提供这些信息。
Pascal Thivent 09年

在我的第一个方案中,最终用户仅键入三个字符:mvn。其他所有键入操作均由操作员完成。
bmargulies

22

Maven依赖插件 2.4版本开始,您还可以使用-Ddest标志为工件定义目标位置。它应该指向目标工件的文件名(而不是目录)。请参阅参数页面以获取可以使用的其他参数

mvn org.apache.maven.plugins:maven-dependency-plugin:2.4:get \
    -DremoteRepositories=http://download.java.net/maven/2 \
    -Dartifact=robo-guice:robo-guice:0.4-SNAPSHOT \
    -Ddest=c:\temp\robo-guice.jar

2
谢谢!-Ddest被标记为已弃用。是否有新的新解决方案?
迪马斯


3
复制目标不会复制可传递的部门。
Renato
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.