我有一個Maven 2多模塊項目,並希望確保從我的本地檢出源獲取所有內容。Maven無(遠程)存儲庫?
- 是否有可能告訴Maven永遠不會爲它有源的模塊下載任何東西?我必須禁用遠程存儲庫嗎?
- Maven是否總是需要花費昂貴的方式將模塊安裝到本地存儲庫中,然後再爲每個依賴項提取它?
- 如果Maven自己的本地源發生更改,Maven會自動首先重新編譯模塊的依賴關係,然後編譯依賴項?
我有一個Maven 2多模塊項目,並希望確保從我的本地檢出源獲取所有內容。Maven無(遠程)存儲庫?
是否有可能告訴Maven永遠不會爲它有源的模塊下載任何東西?
否Maven 2僅在構建時「看到」當前模塊。另外,你可以通過在模塊中運行Maven來構建樹的一部分。
是否必須禁用遠程存儲庫?
是的,使用「離線」選項-o
或-offline
。或者使用settings.xml
和沒有任何文件的代理。但這不是你想要的。
Maven總是需要花費昂貴的方式將模塊安裝到本地存儲庫,然後再爲每個依賴項提取它嗎?
是的,但它並不昂貴。在構建過程中,文件被複制(十年前這很貴)。當使用依賴關係時,Maven只是將文件的路徑添加到Java進程中。所以文件不會被複制或修改。 Maven假定本地存儲庫中的文件不會更改(或者在下載/安裝發生時僅更改一次)。
如果Maven的本地信息源發生變化,Maven是否會自動首先重新編譯模塊的依賴關係?
不。有計劃的Maven 3,但我找不到一個選項來啓用類似的東西。
要解決您的問題,您應該安裝本地代理(如Nexus)。
Maven的下載東西(依賴)僅當它不是在你的本地reposiotory($USER_HOME/.m2/repository
)可用。如果您不想要下載任何內容,請使用離線模式。這可以通過使用-o
開關完成。例如。
mvn -o clean install
沒有什麼貴的東西。如果您正在構建完整的父項目,它將構建所有模塊,然後將工件複製到本地存儲庫。然後,當你建立一個依賴於這些項目的項目時,Maven會將它們從硬盤上的本地存儲庫複製到將要爲當前項目創建的包中。
否。我被燒了。 Maven不會自動編譯依賴關係。有一個名爲Maven Reactor Plug-in的插件。該插件使您能夠在構建項目之前構建項目的依賴關係。
哇!我們必須一直坐在一起打字。 :) – Nishant 2011-02-28 11:21:59
@Nishant:它發生:-) – 2011-02-28 11:26:01