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

Gil*_*zan 5 java maven

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

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

像这样的东西:

mvn super-downloader:download-everything -Dartifact=my.group:myArtifact:version -Ddirectory=.
Run Code Online (Sandbox Code Playgroud)

我尝试过的:

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

依赖:copy-dependencies需要maven项目.我需要在没有pom.xml的情况下运行该命令.

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

那么,有什么想法吗?

谢谢.

Gil*_*zan 3

受到这个答案的启发,我创建了一个简单的 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
Run Code Online (Sandbox Code Playgroud)

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

这不是最好的解决方案,不是最漂亮的解决方案,也不是我想要的,但它解决了问题并挽救了这一天。