2012-05-08 87 views
0

我是Maven的新手,使用Eclipse的m2e插件。我仍然圍繞着Maven,但是似乎每當我需要導入一個新的庫時,例如java.util.List,現在我必須手動完成爲jar找到正確的存儲庫並將其添加到依賴關係中的麻煩POM。這似乎是一個主要的麻煩,尤其是因爲在公共倉庫中找不到一些罐子,所以他們必須上傳到本地倉庫。Maven需要手動依賴關係更新?

我在Eclipse中錯過了關於Maven的一些信息嗎?當Eclipse自動導入新庫時,有沒有辦法自動更新POM?

我想了解如何使用Maven節省時間/精力...

+1

您不應該需要修改java.util.List的pom.xml。你是什​​麼意思_Eclipse自動導入一個新的庫_?你所有的外部庫應該在你的pom.xml中聲明爲dependencies –

+0

如果你輸入你的源代碼的東西:列表 ...通過ctrl-space在Word「List」之後,你應該得到一個類型下拉列表的建議。如果您自己輸入代碼列表 list = new ArrayList ();之後,您應該使用Ctrl-Shift-O來完成您的java文件中的導入列表,該導入列表應該使用正確的信息自動填充。否則,您的Eclipse配置不正確。 – khmarbaise

回答

3

你選了一個壞例子。不管Maven配置如何,Java Standard Runtime附帶的實際Java庫的部分都在那裏。考慮到這一點,如果你想添加一些外部的東西,比如Log4j,那麼你需要在Log4j上添加一個項目依賴項。然後,Maven將獲取依賴信息並創建一個「簽名」,首先在本地緩存中搜索,然後在外部存儲庫中搜索。

這樣的簽名看起來像

groupId:artifactId:version 

或許

groupId:artifactId:version:classifier 

此標識行家「模塊」,然後將下載並配置到系統中。一旦到位,將模塊中的所有類添加到您配置的項目中。

+0

當您說「在Log4j上添加項目依賴項」時,您是否在討論打開POM,單擊依賴性選項卡,然後使用組ID,工件ID等搜索Log4j? – matthewb

+0

pom是一個名爲pom.xml的文件。您可能正在使用一種工具來自動編寫和重寫該文件。直接打開文件,您將看到XML標籤中的「依賴」塊。至少在學習maven的初始階段,查看XML以確定項目中真正設置的內容是非常有用的。 –

0

Maven主要節省下載和組織JAR文件的時間。通過定義「標準」項目佈局和「標準」構建順序,Maven消除了「爲什麼不是我的項目構建」抽獎活動中的大量猜測。此外,您可以使用像「mvn dependency:tree」這樣的整潔命令來遞歸地打印出您的項目所依賴的所有JAR的列表。

警告:如果您正在使用M2E插件和Eclipse,您可能還會遇到插件本身的問題。 1.0版本(在eclipse.org上託管)比之前的0.12版本(在Sonatype上託管)要友善得多。你可以通過從apache(maven.apache.org)下載並安裝Maven的「standalone」版本並從命令行運行Maven來解決這個問題。這實際上比嘗試在Eclipse中運行Maven(以我的個人經驗)更穩定,並且可以在嘗試瞭解Maven時爲您節省一些痛苦。