2010-08-30 58 views
30

我想要類似下面的內容。如何從Maven中心下載jar文件,而無需編寫任何pom.xml

我只想要一個實用工具,它能夠從Maven Repository下載jar和它們的依賴關係,而不會對我的項目的構建方式施加任何限制。

我想是這樣的:

download-jar --dest=lib/ 'commons-io:commons-io:jar:1.4' 

它應該能夠同時下載的依賴關係。

更新:

我不知道一個pom.xml要層次分明。

我需要完成的唯一任務就是下載罐子,我希望有一個工具可以完成這個任務,而不會因爲超級信息而困擾我。

有這樣的事情嗎?

+0

我不認爲這是一個重複,因爲引用的問題關於獲取DEPS到當地平方米回購,而這個問題的指定「沒有強加任何限制「,並顯示一個自定義目標(lib /)的例子。 – Chris2048 2014-01-03 18:04:41

+0

我完全同意。答案是:mvn -Dartifact=commons-io:commons-io:1.4:jar -DoutputDirectory=$(pwd) -Dpackaging=jar dependency:copy user1050755 2014-03-30 16:25:46

+0

改進的參數順序:mvn依賴:copy -DoutputDirectory = $(pwd)-Dartifact = commons-io:commons-io:1.4:jar – user1050755 2014-03-30 16:31:43

回答

46

如果你想下載Maven依賴到你的lib目錄中使用的依賴插件與copy-dependencies功能。

mvn -DoutputDirectory=./lib -DincludeArtifactIds=commons-logging,commons-io dependency:copy-dependencies 

沒有-DincludeArtifactIds部分,您將下載每個依賴項。

如果你想下載的神器,而無需特定的項目見下面**:

mvn -DgroupId=commons-io -DartifactId=commons-io -Dversion=1.4 dependency:get 

資源:

關於同一主題:

有趣的評論:

  • * @帕斯卡爾Thivent:

    沒有必要設置一個POM,沒有必要開發自己的工具,使用MVN依賴性:搞定了。這是這個問題的正確答案。

+0

謝謝。這需要有一個適當的pom.xml。這是我想避免的想法。你知道沒有定義pom而獲得相同結果的方法嗎? – 2010-08-30 15:58:57

+0

製作一個合適的maven pom.xml並使用它下載你的依賴需要大約5分鐘。設置一些其他軟件並將其配置爲刮取庫併爲您的依賴項解析POM.xmls並遞歸下載這些依賴項將需要相當長的時間。 – 2010-08-30 16:45:37

+8

@Chris無需設置POM,不需要開發自己的工具,使用'mvn dependency:get'。 – 2010-08-31 14:34:11

0

看一看Ivy。它允許從Maven倉庫進行依賴關係解析,而沒有maven本身的過度複雜性。

15

我還必須指定-DrepoUrl,收到錯誤消息後:

Failed to execute goal org.apache.maven.plugins:maven-dependency-plugin:2.1:get 
    (default-cli) on project standalone-pom: The parameters 'repositoryUrl' 
    for goal org.apache.maven.plugins:maven-dependency-plugin:2.1:get are 
    missing or invalid -> [Help 1] 

因此,這裏是我使用的命令:

mvn -DgroupId=edu.umd -DartifactId=cloud9 -Dversion=1.3.5 \ 
    -DrepoUrl="http://repo1.maven.org/maven2" dependency:get 

Furthemore,-Ddest=~沒有工作。它始終堅持將罐子安裝到~/.m2/repository

+0

謝謝!這對我來說非常有幫助。不需要'pom.xml';) – steve 2013-05-04 00:13:18

+0

命令中間的「\\」是什麼? -_- – 2013-12-21 14:37:54

+0

「\」允許將命令複製粘貼到您的終端或shell腳本中。否則,換行符會觸發每一行的執行。它可能是一條很長的線,但是不幸的是,SO不使用'空白:預包裝',所以太長的線會被切斷。 – chbrown 2013-12-21 16:15:15

5

Maven3使用依賴插件V2.1默認:

$ mvn dependency:get -DrepoUrl=http://download.java.net/maven/2/ \ 
    -DgroupId=commons-io -DartifactId=commons-io -Dversion=1.4 

隨着Maven2的仍然有必要寫規範名稱:

$ mvn2 org.apache.maven.plugins:maven-dependency-plugin:2.1:get \ 
    -DrepoUrl=http://download.java.net/maven/2/ \ 
    -DgroupId=commons-io -DartifactId=commons-io -Dversion=1.4 

使用參數artifact設置名稱神器爲組:神器:版本

$ mvn dependency:get -DrepoUrl=http://download.java.net/maven/2/ \ 
    -Dartifact=commons-io:commons-io:1.4 

使用LATEST下載最新版本的神器:

$ mvn dependency:get -DrepoUrl=http://download.java.net/maven/2/ \ 
    -Dartifact=commons-io:commons-io:LATEST 
+0

命令中間的「\\」是什麼? -_- – 2013-12-21 14:17:00

+0

@IulianOnofrei與'mvn'沒有任何關係:)在bash中使用字符'\'來連接分割成兩條或更多行的命令http://stackoverflow.com/questions/3871332/how-to-告訴bash這行 - 繼續在下一行 – 2013-12-21 19:40:09

+0

我看到,我討厭它不工作,直到我意識到我必須刪除它,所以這是缺乏經驗的Windows用戶的缺點,雖然:( – 2013-12-21 23:56:16

相關問題