讀古今文學網 > Maven實戰 > 6.3.1 本地倉庫 >

6.3.1 本地倉庫

一般來說,在Maven項目目錄下,沒有諸如lib/這樣用來存放依賴文件的目錄。當Maven在執行編譯或測試時,如果需要使用依賴文件,它總是基於坐標使用本地倉庫的依賴文件。

默認情況下,不管是在Windows還是Linux上,每個用戶在自己的用戶目錄下都有一個路徑名為.m2/repository/的倉庫目錄。例如,筆者的用戶名是juven,我在Windows機器上的本地倉庫地址為C:\Users\juven\.m2\repository\,而我在Linux上的本地倉庫地址為/home/juven/.m2/repository/。注意,在Linux系統中,以點(.)開頭的文件或目錄默認是隱藏的,可以使用ls-a命令顯示隱藏文件或目錄。

有時候,因為某些原因(例如C盤空間不夠),用戶會想要自定義本地倉庫目錄地址。這時,可以編輯文件~/.m2/settings.xml,設置localRepository元素的值為想要的倉庫地址。例如:

這樣,該用戶的本地倉庫地址就被設置成了D:\java\repository\。

需要注意的是,默認情況下,~/.m2/settings.xml文件是不存在的,用戶需要從Maven安裝目錄複製$M2_HOME/conf/settings.xml文件再進行編輯。本書始終推薦大家不要直接修改全局目錄的settings.xml文件,具體原因已在第2.7.2節中闡述。

一個構件只有在本地倉庫中之後,才能由其他Maven項目使用,那麼構件如何進入到本地倉庫中呢?最常見的是依賴Maven從遠程倉庫下載到本地倉庫中。還有一種常見的情況是,將本地項目的構件安裝到Maven倉庫中。例如,本地有兩個項目A和B,兩者都無法從遠程倉庫獲得,而同時A又依賴於B,為了能構建A,B就必須首先得以構建並安裝到本地倉庫中。

在某個項目中執行mvn clean install命令,就能看到如下輸出:

install插件的install目標將項目的構建輸出文件安裝到本地倉庫。在上述輸出中,構建輸出文件是account-email-1.0.0-SNAPSHOT.jar,本地倉庫地址是D:\java\repository,Maven使用Install插件將該文件複製到本地倉庫中,具體的路徑根據坐標計算獲得。計算邏輯請參考6.2節。