2013-04-15 98 views
3

我正在構建一個依賴庫的Java項目。 mvn.bat clean install按照預期生成了target子目錄,並且該項目也與mvn.bat clean install一起建成。Apache Maven:依賴項和庫在本地安裝在哪裏?

什麼是不期望的是,當我刪除整個目錄的庫,外部項目仍然建好,雖然它依賴的庫已經消失。

這是如何工作的?

UPDATE:原來Maven在%USERPROFILE\.m2中生成某種緩存。

+0

你爲什麼要maven不要緩存? –

回答

4

您很可能會考慮將本地安裝的所有內容(以及來自中央存儲庫的Maven下載文件)提供給以後使用。

您描述的行爲是有意的,並且允許一次構建A,然後讓B在需要時引用它,而不必每次都重新編譯A.這通常是非常可取的,特別是在團隊或大型代碼庫中。

請注意,對於更改代碼,您應該使用-SNAPSHOT工件。他們的處理方式稍有不同。

+2

不錯的答案,我會刪除我的支持。 –

3

您的依賴關係是總是下載到.m2/repository中。

如果你想對你的團隊下載庫一些可預測性,你可以建立一個倉庫管理器,如Nexus:https://repository.apache.org/index.html#welcome

而不是從Maven的中央,你的開發人員下載的依賴將從這裏下載它們的依賴資料庫經理。

+0

出於好奇,爲什麼版本庫管理器使下載更容易預測? –

+0

並不總是如果你在'settings.xml'中改變它。 –

+0

如果settings.xml設置爲僅在Nexus中查找依賴項,並且至少有一名開發人員下載了一個庫,則該庫在Nexus中可用。這確保即使從Maven中心或任何其他存儲庫中刪除了該庫,該庫也適用於所有開發人員。另外,如果您創建自定義工件並將其放置在Nexus中(例如,數據庫驅動程序...),則可確保每個開發人員都使用此自定義工件的相同版本。 – user2147970