Ivy 內建一套開箱即用的預設設定,核心圍繞三類儲存庫:
| 類型 | 用途 | 優先級 |
|---|---|---|
| Local(本地/私有) | 開發者個人專用,優先級最高,不受團隊環境干擾 | 1(最高) |
| Shared(共享) | 團隊共用,存放內部釋出版、公共庫缺失的模組 | 2 |
| Public(公共) | 公共儲存庫(預設為 Maven Central),提供大多數第三方模組 | 3(最低) |
解析時依優先級順序查找:Local → Shared → Public。若在 Local 找到模組(即使版本較舊),即使用該版本,忽略上層較新版本。這保證開發者可在本地覆寫依賴進行隔離開發。
無需撰寫 ivysettings.xml,只需設定 Ant 屬性或環境變數即可覆寫預設值:
ivy.local.default.root=/opt/ivy/repository/local
ivy.local.default.ivy.pattern=[module]/[revision]/ivy.xml
ivy.local.default.artifact.pattern=[module]/[revision]/[artifact].[ext]
ivy.shared.default.root=/opt/ivy/repository/shared
ivy.shared.default.ivy.pattern=[organisation]/[module]/[revision]/[type]s/[artifact].[ext]
ivy.shared.default.artifact.pattern=[organisation]/[module]/[revision]/[type]s/[artifact].[ext]
預設為 Maven Central(ibiblio m2compatible)。若需改用其他公共源,建議改寫設定檔(見下節)。
Ivy 預設設定檔(打包在 JAR 內)採用模組化 <include> 結構:
<ivysettings>
<settings defaultResolver="default"/>
<include url="${ivy.default.settings.dir}/ivysettings-public.xml"/>
<include url="${ivy.default.settings.dir}/ivysettings-shared.xml"/>
<include url="${ivy.default.settings.dir}/ivysettings-local.xml"/>
<include url="${ivy.default.settings.dir}/ivysettings-main-chain.xml"/>
<include url="${ivy.default.settings.dir}/ivysettings-default-chain.xml"/>
</ivysettings>
你可以只替換特定片段,其餘繼承預設。例如自訂公共解析器:
<ivysettings>
<settings defaultResolver="default"/>
<include url="https://myserver/ivy/myivysettings-public.xml"/>
<include url="${ivy.default.settings.dir}/ivysettings-shared.xml"/>
<include url="${ivy.default.settings.dir}/ivysettings-local.xml"/>
<include url="${ivy.default.settings.dir}/ivysettings-main-chain.xml"/>
<include url="${ivy.default.settings.dir}/ivysettings-default-chain.xml"/>
</ivysettings>
ivysettings-public.xml : <ibiblio name="public" m2compatible="true"/>
ivysettings-shared.xml : 定義 shared filesystem resolver + 路徑屬性
ivysettings-local.xml : 定義 local filesystem resolver + 路徑屬性
ivysettings-main-chain.xml : <chain name="main" dual="true"> shared → public
ivysettings-default-chain.xml: <chain name="default" returnFirst="true"> local → main
掌握這些片段,你就能像積木一樣組合出完全符合團隊需求的解析策略:自訂公共源、將共享庫指向 NAS、調整鏈順序、啟用/停用 dual 模式等。
Ivy 的預設設定已涵蓋 80% 場景;透過屬性覆寫可解決 15% 的路徑/佈局調整;剩餘 5% 複雜需求則利用模組化 include 機制精準替換片段。建議先閱讀預設設定檔結構,再按需客製化,事半功倍。