我正在構建一個依賴庫的Java項目。 mvn.bat clean install
按照預期生成了target
子目錄,並且該項目也與mvn.bat clean install
一起建成。Apache Maven:依賴項和庫在本地安裝在哪裏?
什麼是不期望的是,當我刪除整個目錄的庫,外部項目仍然建好,雖然它依賴的庫已經消失。
這是如何工作的?
UPDATE:原來Maven在%USERPROFILE\.m2
中生成某種緩存。
我正在構建一個依賴庫的Java項目。 mvn.bat clean install
按照預期生成了target
子目錄,並且該項目也與mvn.bat clean install
一起建成。Apache Maven:依賴項和庫在本地安裝在哪裏?
什麼是不期望的是,當我刪除整個目錄的庫,外部項目仍然建好,雖然它依賴的庫已經消失。
這是如何工作的?
UPDATE:原來Maven在%USERPROFILE\.m2
中生成某種緩存。
您很可能會考慮將本地安裝的所有內容(以及來自中央存儲庫的Maven下載文件)提供給以後使用。
您描述的行爲是有意的,並且允許一次構建A,然後讓B在需要時引用它,而不必每次都重新編譯A.這通常是非常可取的,特別是在團隊或大型代碼庫中。
請注意,對於更改代碼,您應該使用-SNAPSHOT工件。他們的處理方式稍有不同。
不錯的答案,我會刪除我的支持。 –
您的依賴關係是總是下載到.m2/repository中。
如果你想對你的團隊下載庫一些可預測性,你可以建立一個倉庫管理器,如Nexus:https://repository.apache.org/index.html#welcome
而不是從Maven的中央,你的開發人員下載的依賴將從這裏下載它們的依賴資料庫經理。
出於好奇,爲什麼版本庫管理器使下載更容易預測? –
並不總是如果你在'settings.xml'中改變它。 –
如果settings.xml設置爲僅在Nexus中查找依賴項,並且至少有一名開發人員下載了一個庫,則該庫在Nexus中可用。這確保即使從Maven中心或任何其他存儲庫中刪除了該庫,該庫也適用於所有開發人員。另外,如果您創建自定義工件並將其放置在Nexus中(例如,數據庫驅動程序...),則可確保每個開發人員都使用此自定義工件的相同版本。 – user2147970
你爲什麼要maven不要緩存? –