本範例包含 dependee(被依賴方)與 depender(依賴方)兩個專案,驗證兩大核心行為:
latest.integration 自動獲取被依賴專案的最新版本。dependence/
├── config/
│ ├── ivysettings.xml # Ivy 解析器設定
│ └── ivysettings.properties
├── dependee/ # 被依賴專案
│ ├── ivy.xml
│ ├── build.xml
│ └── src/standalone/Main.java
└── depender/ # 依賴專案
├── ivy.xml
├── build.xml
└── src/depending/Main.java
<ivy-module version="1.0">
<info organisation="org.apache" module="dependee"/>
<dependencies>
<dependency org="commons-lang" name="commons-lang" rev="2.0"/>
</dependencies>
</ivy-module>
僅依賴 commons-lang:2.0。
<ivy-module version="1.0">
<info organisation="org.apache" module="depender"/>
<dependencies>
<dependency name="dependee" rev="latest.integration"/>
</dependencies>
</ivy-module>
依賴 org.apache#dependee 的最新整合版本(組織預設繼承自當前模組)。
<ivysettings>
<properties file="${ivy.settings.dir}/ivysettings.properties"/>
<settings defaultCache="${ivy.settings.dir}/ivy-cache" defaultResolver="libraries"/>
<resolvers>
<filesystem name="projects">
<artifact pattern="${repository.dir}/[artifact]-[revision].[ext]"/>
<ivy pattern="${repository.dir}/[module]-[revision].xml"/>
</filesystem>
<ibiblio name="libraries" m2compatible="true" usepoms="false"/>
</resolvers>
<modules>
<module organisation="org.apache" name="dependee" resolver="projects"/>
</modules>
</ivysettings>
dependee)。org.apache#dependee 走 projects 解析器,其餘走預設 libraries。在 src/example/dependence 執行 ant 清理建構產物與 Ivy 快取。
進入 dependee 目錄執行 ant publish。日誌顯示:
libraries 下載 commons-lang-2.0.jar。dependee v1 到 repository/standalone-1.jar 與 standalone-1.xml。進入 depender 執行 ant。解析報告:
found [ org.apache | standalone | 1 ] in projects
found [ commons-lang | commons-lang | 2.0 ] in libraries
| default | 2 | 1 | 0 | 0 || 2 | 1 |
projects 解析器獲取 dependee v1。commons-lang 從快取獲取(無需下載)。standalone.Main v1 且 commons-lang 運作正常。再次在 dependee 執行 ant publish,版本號自動遞增為 2。儲存庫現有兩版本:
dependee-1.jar dependee-1.xml dependee-2.jar dependee-2.xml
再次執行 depender 的 ant,解析日誌顯示:
found [ org.apache | standalone | 2 ] in projects
[2] [ org.apache | standalone | latest.integration ]
程式輸出變為 you are using version 2 of class standalone.Main,證明 latest.integration 機制完美運作,無需修改依賴宣告即可自動升級。
本教程展示了 Ivy 在專案間依賴管理的核心優勢:傳遞依賴自動傳播、最新版本自動解析、本地/遠端儲存庫靈活路由。這為團隊內部模組的持續整合與版本演進奠定了堅實基礎。