我有一个使用 maven 2 分发的库。这个库的典型用户不使用 maven 来构建他们的应用程序,但可能对 maven 有点熟悉并且可能已经安装了它。
我想记录一个“简单”的单行命令,他们可以用来将我的库的工件下载到他们的本地 ~/.m2/repository
,而无需他们设置 pom.xml 来执行此操作。
我认为有办法做到这一点,但在查看 install:install-file
和 dependency
插件文档后似乎找不到它。我试过这样的事情:
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吗?
从 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
给他们一个简单的 pom,将这些 jar 列为依赖项和运行说明:
mvn dependency:go-offline
这会将依赖项拉到本地仓库。
更直接的解决方案是 dependency:get,但需要输入很多参数:
mvn dependency:get -DrepoUrl=something -Dartifact=group:artifact:version
get
mojo 实际上期望 -DrepoUrl
存在,而不是 -DrepositoryUrl
。关于类型的参数,没有魔法,您需要以某种方式提供这些信息。
从 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
不定期副业成功案例分享
repoUrl
有Deprecated. Use remoteRepositories
。请更新答案也许:)mvn org.apache.maven.plugins:maven-dependency-plugin:2.1:get -DrepoUrl=https://repo.maven.apache.org/maven2/ -Dartifact=com.amazonaws:aws-java-sdk-support:1.10.77