2012-02-23 58 views
1

注:Maven的依賴關係的插件不適合這裏下面如何從CLI(不在項目目錄中)下載Maven工件及其依賴項的Java源代碼?

我部署項目附帶源artifactory的規定的原因。我希望能夠運行命令來下載和解壓給定工件及其依賴項的源代碼。我將用這個來區分神器的兩個版本。

我想要做的基本上是這樣的:

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

試過結合一對夫婦從Maven的依賴,插件的目標,但是這似乎並不能夠做什麼,我需要:

  • :解壓依賴性需要一個項目
  • :讓要求我明確指定的遠程回購。爲什麼不能在我的settings.xml中使用它們?

我試着寫我自己的魔力要做到這一點,但我狼狽,因爲我似乎無法獲得一個句柄遠程倉庫,除非我在一個項目目錄來的。因此我無法下載該項目。即使我已經下載了項目,mojo已經初始化了它的$ {project},因此我將無法獲得它的依賴關係等。

希望得到您的幫助。

回答

0

apache ivy jar可以用作CLI program來下載Maven工件。

下面的例子下載從Maven的中央常春藤,然後用它來下載公地郎源的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]" 
+0

謝謝,很方便,雖然因爲提出這個問題,我已經開始寫一個Maven插件做什麼,我需要。將在github上分享,並將鏈接發回到這裏。 – 2012-02-24 10:39:53

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=. 
相關問題