如何从CLI(不在项目目录中)下载Maven工件及其依赖项的Java源代码?

如何从CLI(不在项目目录中)下载Maven工件及其依赖项的Java源代码?,maven,maven-3,artifactory,maven-dependency-plugin,Maven,Maven 3,Artifactory,Maven Dependency Plugin,注意:maven依赖插件不适合这里,原因如下 我正在将项目部署到Artifactory,并附带源代码。我希望能够运行一个命令来下载和解压缩给定工件及其依赖项的源代码。我将使用它来区分一个工件的两个版本 我想做的基本上是: mvn extract:sources -DgroupId=[groupId] -DartifactId=[artifactId] -Dversion=[version] 我尝试结合maven dependency插件的几个目标,但这似乎不能满足我的需要: :解压缩依赖项需

注意:maven依赖插件不适合这里,原因如下

我正在将项目部署到Artifactory,并附带源代码。我希望能够运行一个命令来下载和解压缩给定工件及其依赖项的源代码。我将使用它来区分一个工件的两个版本

我想做的基本上是:

mvn extract:sources -DgroupId=[groupId] -DartifactId=[artifactId] -Dversion=[version]
我尝试结合maven dependency插件的几个目标,但这似乎不能满足我的需要:

  • :解压缩依赖项需要一个项目
  • :get要求我显式指定远程回购。为什么不能在my settings.xml中使用它们
我曾尝试编写自己的mojo来实现这一点,但我感到困惑,因为除非我在项目目录中,否则我似乎无法处理远程存储库。因此,我无法下载该项目。即使我下载了这个项目,mojo也已经初始化了它的${project},因此我无法获取它的依赖项等等


非常感谢您的帮助。

ApacheIvyJAR可以作为下载Maven工件的工具

以下示例从Maven Central下载ivy,然后使用它下载commons lang源jar:

wget -O ivy.jar \
     http://search.maven.org/remotecontent?filepath=org/apache/ivy/ivy/2.2.0/ivy-2.2.0.jar

java -jar ivy.jar \
     -dependency commons-lang commons-lang 2.6 \
     -confs sources \
     -retrieve "[artifact](-[classifier]).[ext]"

我发现最好的方法是使用3个maven命令:

  • 一个能得到你的人工制品的
  • 一个得到你的人造pom的
  • 和一个使用其pom获取其依赖项的
下面是一个bash代码片段:

#/bin/bash
DIR=some/DIR
artifact_ID=您的人工制品
GROUP_ID=com.your.GROUP.ID
版本=1.7
artifact=${GROUP_ID}:${artifact_ID}:${VERSION}
rm-fR$DIR
插件:maven依赖插件:2.8:复制\
-Dartifact=$ARTEFACT\
-DoutputDirectory=$DIR
#现在获取pom:复制依赖项目标将需要它
插件:maven依赖插件:2.8:复制\
-Dartifact=$ARTEFACT:pom\
-DoutputDirectory=$DIR
mvn-f${DIR}/${artifact_ID}-${VERSION}.pom org.apache.maven.plugins:maven依赖项-plugin:2.8:copy依赖项\
-DoutputDirectory=。

谢谢,这很方便,不过自从问了这个问题之后,我已经开始编写一个Maven插件来满足我的需要。将在github上共享并将链接发布回此处。