如何使用Maven将具有依赖关系的工件下载到指定目录(没有pom.xml)?

时间:2014-02-24 18:57:10

标签: java maven

我需要做的是从我的内部存储库(当前Nexus)及其所有依赖项下载工件到指定目录。并且没有实际下载源代码(并使用其pom.xml):我需要从shell运行普通的maven命令并访问我的存储库中的二进制文件。

我不需要将依赖项下载到我的本地存储库(dependency:get / dependency:copy插件的行为),我希望工件及其所有依赖项都复制到指定的目录。

这样的事情:

mvn super-downloader:download-everything -Dartifact=my.group:myArtifact:version -Ddirectory=.

我尝试了什么:

dependency:getdependency:copy插件将依赖项复制到我的本地存储库(在〜/ .m2下),这不是我想要的。

dependency:copy-dependencies需要一个maven项目。我需要在没有pom.xml的情况下运行命令。

com.googlecode.maven-download-plugin:maven-download-plugin:artifact插件应与-DdependencyDepth=<some high value>一起使用,但无法尝试解析对xerces:xerces-impl:2.6.2的依赖关系。我手动将其上传到我的Nexus,但后来尝试查找不存在的xml-apis:xml-apis:2.6.2失败了。

那么,有什么想法吗?

感谢。

2 个答案:

答案 0 :(得分:3)

this answer的启发,我创建了一个简单的bash脚本来解决问题:

#mvn-copy.sh
mvn org.apache.maven.plugins:maven-dependency-plugin:2.8:copy -Dmdep.useBaseVersion=true -DoutputDirectory=. -Dartifact=$1:$2:$3
mvn org.apache.maven.plugins:maven-dependency-plugin:2.8:copy -Dmdep.stripVersion=true  -DoutputDirectory=. -Dartifact=$1:$2:$3:pom
mvn -f $2.pom org.apache.maven.plugins:maven-dependency-plugin:2.8:copy-dependencies -DoutputDirectory=lib

要使用它,只需输入./mvn-copy.sh <groupId> <artifactId> <version>即可。它会将当前目录下的主jar下载,然后将所有依赖项下载到lib文件夹中。

不是最好的解决方案,不是最美丽的解决方案,也不是我想要的,但它解决了问题并节省了一天。

答案 1 :(得分:1)

你要求https://jira.codehaus.org/browse/MDEP-322这似乎是一个公平的要求