2013-09-24 332 views
1

我是使用Maven構建項目的新手。我知道你在POM文件中聲明瞭依賴關係,該文件概述了項目所需的jar,以便在編譯時將它們添加到構建中。瞭解Maven依賴關係

我的問題是,如何在開發過程中工作,何時需要jar文件以開發應用程序?我認爲Maven的觀點是,你不必真的擁有jar文件,它會在構建時被獲取並投入戰爭。但是如果我正在開發並且需要一個jar文件(比如說澤西島),那麼我仍然需要自己去抓取jar,並將其放在lib目錄中,以便完成開發工作。我知道那個.jar中可以提供哪些類/方法?有人可以向我解釋我缺少的東西嗎?

我的導入語句引用球衣類將在編譯時解決,因爲現在他們被加下紅線,因爲該jar目前不存在?

回答

1

一旦你在Maven pom中指定了一個依賴項,那麼它的maven負責下載它。記住Maven並不打擾你的代碼是否依賴於該jar。 因此,在您的IDE創建Maven項目[不是簡單的Java項目],添加所有你的POM的依賴,當你保存POM,所有的依賴關係將被下載。 如果依賴關係沒有被下載,那麼你需要檢查你的maven settings.xml文件,其中存儲庫URL或憑據可能不正確。

也想廣告建立部分細節。 Maven有很多插件可用,它可以幫助你將所有的依賴關係打包成war文件[assembly plugin]或rpm [maven rpm plugin]。這些插件會將所有的依賴關係和主jar包裝到一個可部署的文件中。

+0

我認爲這是我錯過的關鍵,是當你保存pom文件時,罐子被下載。謝謝! – user1154644

+0

我的其他問題,如果我正在開發一臺無法訪問互聯網的機器,這與maven更相關,有沒有一種方法可以讓NetBeans指向我的本地Maven存儲庫?現在,當我嘗試使用netbeans創建Java Maven項目時,項目的創建失敗,說'找不到前綴'原型的插件'..... – user1154644

+0

所有IDE中的項目始終指向本地存儲庫,但是您將需要網絡訪問才能將依賴關係下載到本地存儲庫。如果互聯網無法正常工作,您也可以手動將jar放入本地存儲庫。只有當該jar版本在本地存儲庫中不存在時,Maven纔會下載jar。 – Lokesh

1

你的假設或推定或概念是錯誤的。

讓我們舉一個例子。您正在創建一個新的Web應用程序項目

  1. 創建使用maven項目:原型
  2. 轉換項目到eclipse兼容(IDE兼容的話)。這是通過執行一個命令完成的,並將所需的jar添加到類路徑文件中,並且可以像平常一樣開發應用程序。
  3. 構建和部署
+0

2)如果IDE直接支持Maven,則不需要(例如NetBeans) –

+0

同意。這是沒有必要的,但或多或​​少需要做,因爲沒有人願意在記事本或任何其他正常編輯器中開發代碼。 –

+0

對我來說,這似乎很奇怪。我知道在構建/編譯時,jar中的類的引用將被解析,但是如果我創建了一個類,導入了澤西類並開始使用類,那麼編譯器如何知道這些類,因爲沒有任何東西已被下載。 – user1154644

1

首先,與任何Java Maven項目,你將不得不選擇選項「建立與依賴」,特別是如果你使用的是NetBeans。使用Eclipse,您可以選擇「下載源」。完成之後,將會下載Maven依賴項(JAR文件)。

此外,你說你的導入語句將在編譯時解決。這是在您點擊'Build With Dependencies'選項(右鍵單擊NetBeans中的Java Project)時完成的,因爲它會下載所有的依賴關係並構建應用程序並解析任何使用pom.xml中的JAR庫的導入。

+0

我明白了。我想我的誤解是在構建之前,當我在Jersey jar文件中引用一個類時,Eclipse會知道我指的是什麼? – user1154644

+0

它應該這樣做。我也會確保安裝正確的Eclipse Maven插件。 (它可以很容易地被遺忘!) – blackpanther