2017-01-17 58 views
2

是否加入這個倉庫進入到pom.xml有意義嗎?爲什麼在POM中添加Maven本地存儲庫作爲distributionManagement?

... 
<distributionManagement> 
    <repository> 
     <id>dev</id> 
     <name>Local repository</name> 
     <url>file://${user.home}/.m2/repository</url> 
    </repository> 
... 

我一直以爲默認情況下會包含本地回購。

我知道的事實,這將不會在Windows上構建。我在我的公司發現了上面的條目pom.xml

+0

不,我不這樣做。我的本地.m2完全按照它的原樣工作,沒有明確地將它作爲添加到我的pom.xml中。我在Windows 7上運行,所以它不是關於Microsoft操作系統。看起來像某人的錯誤。 – duffymo

+1

這看起來好像有人不知道'mvn install'是幹什麼的? – khmarbaise

回答

3

這裏有一些關注。不,這樣做沒有意義,但不是因爲它默認包含 - 不是 - 但是因爲這是一個非常錯誤的事情。

記住<distributionManagement>配置哪裏Maven將部署和釋放你的假象。有了這一點的配置,Maven會將工件釋放到您的本地存儲庫中;這是有問題的:

  • 您的本地存儲庫應該是下載和安裝的依賴關係的緩存,它可以在任何時候完全刪除和刪除;一切都應該仍然有效(Maven只會重新下載依賴關係)。實際上,在每個構建具有不同本地存儲庫的CI系統上進行清理構建並不奇怪,以便每個構建完全獨立於其他構建(並且不依賴於以前下載的構件)。
  • 當你將部署文物,它會被部署在本地計算機上,無法給任何人。這對於測試目的非常有用(像一些虛假的遠程存儲庫),但是當您生成實際的最終工件時,您希望它們全局可用(例如在公司工件管理器,Central等)。

簡而言之,這是安裝和下載時使用的本地存儲庫與部署或釋放時使用的遠程存儲庫之間的區別。他們可能會感到困惑,因爲遠程存儲庫很可能是基於文件的存儲庫(如本地存儲庫),but their semantics are really different。也in the Maven docs參見:

本地資源庫是指你自己安裝的副本是遠程下載的緩存,同時還包含了你還沒有發佈的臨時構建構件。

遠程存儲庫是指任何其他類型的存儲庫,可通過多種協議訪問,如file://http://。這些存儲庫可能是由第三方設置的真正的遠程存儲庫,以提供其下載工件[...]。其他「遠程」存儲庫可能是在公司內的文件或HTTP服務器上設置的內部存儲庫,用於在開發團隊和發佈之間共享私人工件。

如果您真的想將工件放入本地存儲庫,則應完全刪除該配置,並使用mvn clean install

相關問題