在很多情況下,默認的中央倉庫無法滿足項目的需求,可能項目需要的構件存在於另外一個遠程倉庫中,如Company Maven倉庫。這時,可以在項目POM中或maven的settings.xml中配置該倉庫
<repositories> <repository> <id>company</id> <name>Company Repository</name> <url>http://repository.company.com/maven2/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> <layout>default</layout> </repository> </repositories>
在repositories元素下,可以使用repository子元素聲明一個或者多個遠程倉庫。該例中聲明了一個id為company,名稱為Company Repository的倉庫。任何一個倉庫聲明的id必須是唯一的,尤其需要注意的是,Maven自帶的中央倉庫使用的id為central,如果其他的倉庫聲明也使用該id,就會覆蓋中央倉庫的配置。該配置中的url值指向了倉庫的地址,一般來說,該地址都基於http協議,Maven用戶都可以在瀏覽器中打開倉庫地址瀏覽構件。
該例配置中的releases和snapshots元素比較重要,它們用來控制Maven對於發布版構件和快照版構件的下載。
這里需要注意的是enabled子元素,該例中releases的enabled值為true,表示開啟Company倉庫的發布版本下載支持,而snapshots的enabled值為false,表示關閉Company倉庫的快照版本的下載支持。因此,根據該配置,Maven只會從Company倉庫下載發布版的構件,而不會下載快照版的構件。該例中的layout元素值default表示倉庫的布局是Maven 2及Maven 3的默認布局,而不是Maven 1的布局。
對於releases和snapshots來說,除了enabled,它們還包含另外兩個子元素updatePolicy和checksumPolicy:
<snapshots>
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
<checksumPolicy>ignore</checksumPolicy>
</snapshots>
元素updatePolicy用來配置Maven從遠程倉庫檢查更新的頻率,默認的值是daily,表示Maven每天檢查一次。其他可用的值包括:never——從不檢查更新;always——每次構建都檢查更新;in-terval:X——每隔X分鍾檢查一次更新(X為任意整數)。
元素checksumPolicy用來配置Maven檢查檢驗和文件的策略。當構件被部署到Maven倉庫中時,會同時部署對應的校驗和文件。在下載構件的時候,Maven會驗證校驗和文件,如果校驗和驗證失敗,怎么辦?當checksumPolicy的值為默認的warn時,Maven會在執行構建時輸出警告信息,其他可用的值包括:fail——Maven遇到校驗和錯誤就讓構建失敗;ignore——使Maven完全忽略校驗和錯誤。