讀古今文學網 > Maven實戰 > 9.5 配置Maven從Nexus下載構件 >

9.5 配置Maven從Nexus下載構件

6.4節與7.5.1節已經詳細介紹了如何在POM中為Maven配置倉庫和插件倉庫。例如,當需要為項目添加Nexus私服上的public倉庫時,可以按代碼清單9-1所示配置。

代碼清單9-1 在POM中配置Nexus倉庫

這樣的配置只對當前Maven項目有效,在實際應用中,我們往往想要通過一次配置就能讓本機所有的Maven項目都使用自己的Maven私服。這個時候讀者可能會想到settings.xml文件,該文件中的配置對所有本機Maven項目有效,但是settings.xml並不支持直接配置repositories和pluginRepositories。所幸Maven還提供了Profile機制,能讓用戶將倉庫配置放到setting.xml中的Profile中,如代碼清單9-2所示。

代碼清單9-2 在settings.xml中配置Nexus倉庫

該配置中使用了一個id為nexus的profile,這個profile包含了相關的倉庫配置,同時配置中又使用activeProfile元素將nexus這個profile激活,這樣當執行Maven構建的時候,激活的profile會將倉庫配置應用到項目中去。關於Maven Profile,本書後面還會有專門的章節進一步介紹。

代碼清單9-2中的配置已經能讓本機所有的Maven項目從Nexus私服下載構件。細心的讀者可能會注意到,Maven除了從Nexus下載構件之外,還會不時地訪問中央倉庫central,我們希望的是所有Maven下載請求都僅僅通過Nexus,以全面發揮私服的作用。這個時候就需要借助於6.7節提到的Maven鏡像配置了。可以創建一個匹配任何倉庫的鏡像,鏡像的地址為私服,這樣,Maven對任何倉庫的構件下載請求都會轉到私服中。具體配置見代碼清單9-3。

代碼清單9-3 配置鏡像讓Maven只使用私服

關於鏡像、profile及profile激活的配置不再贅述,這裡需要解釋的是倉庫及插件倉庫配置,它們的id都為central,也就是說,覆蓋了超級POM中央倉庫的配置,它們的url已無關緊要,因為所有請求都會通過鏡像訪問私服地址。配置倉庫及插件倉庫的主要目的是開啟對快照版本下載的支持,當Maven需要下載發佈版或快照版構件的時候,它首先檢查central,看該類型的構件是否支持,得到正面的回答之後,再根據鏡像匹配規則轉而訪問私服倉庫地址。