1

注意:maven-dependency-plugin 不适合这里,原因如下

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

我想做的基本上是这样的:

mvn extract:sources -DgroupId=[groupId] -DartifactId=[artifactId] -Dversion=[version]

尝试结合 maven-dependency-plugin 中的几个目标,但这似乎无法满足我的需要:

  • :unpack-dependencies需要一个项目
  • :get要求我明确指定一个远程仓库。为什么它不能使用我的 settings.xml 中的那些?

我已经尝试编写自己的 mojo 来做到这一点,但我很困惑,因为除非我在项目目录中,否则我似乎无法处理远程存储库。因此我无法下载该项目。即使我下载了项目,mojo 也已经初始化了它的 ${project} 因此我将无法获取它的依赖项等

感谢您的帮助。

4

2 回答 2

0

The apache ivy jar can be used as a CLI program to download Maven artifacts.

The following example downloads ivy from Maven Central, then uses it to download the commons-lang source 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]"
于 2012-02-24T02:57:14.470 回答
0

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

  • 一个得到你的人工制品
  • 一个让你的人工制品 pom
  • 一个使用它的 pom 获取它的依赖项

这是一个 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=.
于 2014-05-15T15:22:32.260 回答