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

时间:2009-11-21 19:34:44

标签: maven-2

我有一个使用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吗?

3 个答案:

答案 0 :(得分:156)

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

答案 1 :(得分:43)

给他们一个微不足道的pom,将这些jar列为依赖项和运行说明:

mvn dependency:go-offline

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

更直接的解决方案是dependency:get,但输入的内容很多:

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

答案 2 :(得分:19)

Maven Dependency Plugin版本2.4开始,您还可以使用-Ddest标志为工件定义目标目标。它应指向目标工件的文件名(而不是目录)。有关可以使用的其他参数,请参阅parameter page

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