注意:由于以下原因,maven-dependency-plugin不适合
我正在将项目部署到Artifactory,附带来源。我希望能够运行命令来下载和解压缩给定工件及其依赖项的源代码。我将使用它来区分两个版本的工件。
我想做的基本上是这样的:
mvn extract:sources -DgroupId=[groupId] -DartifactId=[artifactId] -Dversion=[version]
尝试结合maven-dependency-plugin中的几个目标,但这似乎无法满足我的需求:
我已经尝试编写自己的mojo来做这件事,但是我感到很沮丧,因为除非我在项目目录中,否则我似乎无法处理远程存储库。因此我无法下载该项目。甚至一旦我下载了项目,mojo就已经初始化了它的$ {project}因此我将无法获得它的依赖等等
非常感谢您的帮助。
答案 0 :(得分:0)
apache ivy jar可以用作CLI program来下载Maven工件。
以下示例从Maven Central下载常春藤,然后使用它来下载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]"
答案 1 :(得分:0)
我发现最好的是使用3个maven命令:
这是一个bash片段:
#!/bin/bash
DIR=some/dir
ARTEFACT_ID=your-artefact
GROUP_ID=com.your.group.id
VERSION=1.7
ARTEFACT=${GROUP_ID}:${ARTEFACT_ID}:${VERSION}
rm -fR $DIR
mvn org.apache.maven.plugins:maven-dependency-plugin:2.8:copy \
-Dartifact=$ARTEFACT \
-DoutputDirectory=$DIR
# now get the pom: it will be needed by the copy-dependencies goal
mvn org.apache.maven.plugins:maven-dependency-plugin:2.8:copy \
-Dartifact=$ARTEFACT:pom \
-DoutputDirectory=$DIR
mvn -f ${DIR}/${ARTEFACT_ID}-${VERSION}.pom org.apache.maven.plugins:maven-dependency- plugin:2.8:copy-dependencies \
-DoutputDirectory=.