2010-03-03 153 views
3

爲什麼每次我做「mvn jetty:run」,maven都會嘗試下載一些依賴項(apache poi和ojdbc jars)?我如何禁用此功能?Maven碼頭下載依賴關係

[INFO] Scanning for projects..  
[INFO] Searching repository for plugin with prefix: 'jetty'. 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building infolitReport 
[INFO] task-segment: [jetty:run] 
[INFO] ------------------------------------------------------------------------ 
[INFO] Preparing jetty:run 
Downloading: http://repository.springsource.com/maven/bundles/release/org/apache/poi/com.springsource.org.apache.poi/3.6/com.springsource.org.apache.poi-3.6.pom 
Downloading: http://repository.springsource.com/maven/bundles/external/org/apache/poi/com.springsource.org.apache.poi/3.6/com.springsource.org.apache.poi-3.6.pom 
Downloading: http://repository.springsource.com/maven/bundles/milestone/org/apache/poi/com.springsource.org.apache.poi/3.6/com.springsource.org.apache.poi-3.6.pom 
Downloading: http://repository.springsource.com/maven/bundles/snapshot/org/apache/poi/com.springsource.org.apache.poi/3.6/com.springsource.org.apache.poi-3.6.pom 
Downloading: http://repo1.maven.org/maven2/org/apache/poi/com.springsource.org.apache.poi/3.6/com.springsource.org.apache.poi-3.6.pom 
Downloading: http://repository.springsource.com/maven/bundles/release/com/oracle/ojdbc14/10.2.0.2/ojdbc14-10.2.0.2.pom 
Downloading: http://repository.springsource.com/maven/bundles/external/com/oracle/ojdbc14/10.2.0.2/ojdbc14-10.2.0.2.pom 
Downloading: http://repository.springsource.com/maven/bundles/milestone/com/oracle/ojdbc14/10.2.0.2/ojdbc14-10.2.0.2.pom 
Downloading: http://repository.springsource.com/maven/bundles/snapshot/com/oracle/ojdbc14/10.2.0.2/ojdbc14-10.2.0.2.pom 
Downloading: http://repo1.maven.org/maven2/com/oracle/ojdbc14/10.2.0.2/ojdbc14-10.2.0.2.pom 
[INFO] [aspectj:compile {execution: default}] 

回答

4

如本章3.5.5. Maven's Dependency Management中解釋說:

Maven中的依賴不僅僅是一個JAR文件;這是一個POM文件,反過來,它可能會聲明對其他工件的依賴關係。依賴關係的這些依賴關係被稱爲傳遞依賴關係,而Maven存儲庫存儲的不僅僅是字節碼;它存儲關於工件的元數據。

因此,當Maven下載JAR依賴項時,它不僅下載JAR,而且還下載POM文件。在這裏,Maven試圖下載它們,但它們不存在(只有jar文件存在)。所以maven不會將它們寫入本地存儲庫,並在下次再次嘗試。

有4個選項的位置:

  1. 使用與POM文件的好公民的文物(或要求負責解決問題)。
  2. 使用存儲庫管理器並創建並上載POM文件。
  3. 在本地存儲庫中創建POM文件(例如使用install:install-file)。
  4. 與它一起生活(嘆氣)並使用-o選項離線運行mvn,以減輕痛苦。
+0

對於ojdbc14,我編輯了我的pom。XML, repo1行家有機 行家repo1有機 http://repo1.maven.org/maven2 ojdbc ojdbc 但我不得不下載oj dbc14.jar手動安裝它 http://lydonchandra.blogspot.com/2010/03/springsource-tool-suite-oracle-jdbc.html – portoalet

0

基本上依賴將要下載的第一次,但一些依賴可能需要比較其版本,並嘗試在下次運行時爲您獲取最新的版本。

如果你並不總是有互聯網連接或只是想短期你的編譯時間,可以追加-o參數,這意味着離線運行,例如mvn jetty:run -o

+0

的Maven不會再次下載固定版本文物。這裏的問題是,即使一次下載POM也沒有成功。 –

+0

好的。罪魁禍首是ojdbc.jar和poi.jar – portoalet

0

帕斯卡爾Thivent

創建本地存儲庫中的POM文件(例如,使用install:install-file)答案示例

mvn install:install-file -DgroupId=org.apache.commons -DartifactId=codec -Dversion=1.3 -Dpackaging=jar -Dfile=lib/commons-codec-1.3.jar -DgeneratePom=true 
mvn install:install-file -DgroupId=org.apache.commons -DartifactId=httpclient -Dversion=3.1 -Dpackaging=jar -Dfile=lib/commons-httpclient-3.1.jar -DgeneratePom=true 
mvn install:install-file -DgroupId=org.apache.commons -DartifactId=logging -Dversion=1.1 -Dpackaging=jar -Dfile=lib/commons-logging-1.1.jar -DgeneratePom=true