2011-02-28 192 views
3

我有一個Maven 2多模塊項目,並希望確保從我的本地檢出源獲取所有內容。Maven無(遠程)存儲庫?

  • 是否有可能告訴Maven永遠不會爲它有源的模塊下載任何東西?我必須禁用遠程存儲庫嗎?
  • Maven是否總是需要花費昂貴的方式將模塊安裝到本地存儲庫中,然後再爲每個依賴項提取它?
  • 如果Maven自己的本地源發生更改,Maven會自動首先重新編譯模塊的依賴關係,然後編譯依賴項?

回答

10

是否有可能告訴Maven永遠不會爲它有源的模塊下載任何東西?

否Maven 2僅在構建時「看到」當前模塊。另外,你可以通過在模塊中運行Maven來構建樹的一部分。

是否必須禁用遠程存儲庫?

是的,使用「離線」選項-o-offline。或者使用settings.xml和沒有任何文件的代理。但這不是你想要的。

Maven總是需要花費昂貴的方式將模塊安裝到本地存儲庫,然後再爲每個依賴項提取它嗎?

是的,但它並不昂貴。在構建過程中,文件被複制(十年前這很貴)。當使用依賴關係時,Maven只是將文件的路徑添加到Java進程中。所以文件不會被複制或修改。 Maven假定本地存儲庫中的文件不會更改(或者在下載/安裝發生時僅更改一次)。

如果Maven的本地信息源發生變化,Maven是否會自動首先重新編譯模塊的依賴關係?

不。有計劃的Maven 3,但我找不到一個選項來啓用類似的東西。

要解決您的問題,您應該安裝本地代理(如Nexus)。

+1

哇!我們必須一直坐在一起打字。 :) – Nishant 2011-02-28 11:21:59

+1

@Nishant:它發生:-) – 2011-02-28 11:26:01

7
  1. Maven的下載東西(依賴)僅當它不是在你的本地reposiotory($USER_HOME/.m2/repository)可用。如果您不想要下載任何內容,請使用離線模式。這可以通過使用-o開關完成。例如。

    mvn -o clean install 
    
  2. 沒有什麼貴的東西。如果您正在構建完整的父項目,它將構建所有模塊,然後將工件複製到本地存儲庫。然後,當你建立一個依賴於這些項目的項目時,Maven會將它們從硬盤上的本地存儲庫複製到將要爲當前項目創建的包中。

  3. 。我被燒了。 Maven不會自動編譯依賴關係。有一個名爲Maven Reactor Plug-in的插件。該插件使您能夠在構建項目之前構建項目的依賴關係。