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

我有一个使用 Maven2分发的库。这个库的典型用户不使用 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 吗?

154997 次浏览

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

mvn dependency:go-offline

这将把依赖项拉到本地回购。

一个更直接的解决方案是 从属关系: 获得,但它有很多要输入的参数:

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

Maven Dependency Plugin Maven 依赖插件的2.1版本开始,就有一个 从属关系: 获得目标用于此目的。为了确保你使用的是正确的插件版本,你需要使用“完全限定名称”:

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

Maven Dependency Plugin 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