使用Maven将依赖项下载到命令行上的目录

Eve*_*ews 22 java maven-3 maven

我需要将项目的所有传递依赖项下载到命令行上的目录,而不需要pom.xml文件或其他脚本.理想情况下,我可以使用一个或两个命令执行此操作.据我所知,这至少是mvn的两步过程.

  1. 将依赖项下载到本地存储库
  2. 将依赖项复制到lib目录

为了获得我运行的依赖项

$ mvn org.apache.maven.plugins:maven-dependency-plugin:2.6:get -DgroupId=org.jclouds.provider -DartifactId=rackspace-cloudservers-us -Dversion=1.5.8
Run Code Online (Sandbox Code Playgroud)

哪个效果很好.不幸的是,dest param并没有帮助我,因为它不会将所有传递依赖项放在dest中.

所以现在我需要将该JAR文件及其所有传递依赖项复制到我的lib目录中.我知道这个部分已经在StackOverflow上被问了很多次但是我的工作没有任何效果.我尝试了以下内容.

$ mvn dependency:copy-dependencies ...
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-dependency-plugin:2.1:copy-dependencies (default-cli): Goal requires a project to execute but there is no POM in this directory
Run Code Online (Sandbox Code Playgroud)

$ mvn dependency:copy ...
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-dependency-plugin:2.1:copy (default-cli): Goal requires a project to execute but there is no POM in this directory
Run Code Online (Sandbox Code Playgroud)

从阅读StackOverflow上的文档和其他答案的副本依赖和复制我认为我可以从命令行使用它们没有pom.xml但mvn似乎需要一个.我的Maven版本是Apache Maven 3.0.4(r1232337; 2012-01-17 02:44:56-0600).

任何人都可以给我一个使用没有pom.xml的mvn复制传递依赖的例子吗?

有没有更好的方法来做我在这里尝试完成的事情?

Mar*_*nor 32

Apache ivy可以作为独立jar运行,以下载Maven依赖项.不需要POM.

curl -L -O http://search.maven.org/remotecontent?filepath=org/apache/ivy/ivy/2.3.0/ivy-2.3.0.jar
java -jar ivy-2.3.0.jar -dependency org.jclouds.provider rackspace-cloudservers-us 1.5.8 -retrieve "lib/[artifact]-[revision](-[classifier]).[ext]"
Run Code Online (Sandbox Code Playgroud)

生成以下文件:

??? ivy-2.3.0.jar
??? lib
    ??? aopalliance-1.0.jar
    ??? asm-3.1.jar
    ??? bcprov-jdk16-1.46.jar
    ??? cglib-2.2.1-v20090111.jar
    ??? clojure-1.3.0.jar
    ??? core.incubator-0.1.0.jar
    ??? gson-2.2.jar
    ??? guava-13.0.jar
    ??? guice-3.0.jar
    ??? guice-assistedinject-3.0.jar
    ??? javax.inject-1.jar
    ??? jclouds-compute-1.5.8.jar
    ??? jclouds-core-1.5.8.jar
    ??? jclouds-scriptbuilder-1.5.8.jar
    ??? jsr250-api-1.0.jar
    ??? jsr311-api-1.1.1.jar
    ??? openstack-keystone-1.5.8.jar
    ??? openstack-nova-1.5.8.jar
    ??? rackspace-cloudidentity-1.5.8.jar
    ??? rackspace-cloudservers-us-1.5.8.jar
    ??? rackspace-cloudservers-us-1.5.8-javadoc.jar
    ??? rackspace-cloudservers-us-1.5.8-sources.jar
    ??? rocoto-6.1.jar
    ??? tools.logging-0.2.3.jar
Run Code Online (Sandbox Code Playgroud)


And*_*ips 25

第一个命令几乎可以为您提供所需的依赖项 - 相关依赖项的POM.完成后,您不需要运行其他项目POM copy:dependencies:

这是一个例子:

mvn org.apache.maven.plugins:maven-dependency-plugin:2.7:get -DgroupId=org.jclouds.provider -DartifactId=rackspace-cloudservers-us -Dversion=1.5.8 -Dtype=pom

mvn org.apache.maven.plugins:maven-dependency-plugin:2.7:copy-dependencies -f /path/to/m2/repo/org/jclouds/provider/rackspace-cloudservers-us/1.5.8/rackspace-cloudservers-us-1.5.8.pom -DoutputDirectory=/path/to/target/dir/don't/use/.
Run Code Online (Sandbox Code Playgroud)

正如Everett Toews所指出的,您可以使用其他选项copy:dependencies来进一步细化下载的内容,例如通过添加-DexcludeTypes=test-jar过滤掉测试JAR.