首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Ivy 教程 (6):專案依賴管理

     編輯:Java 相關知識

目標:示範兩個獨立專案間的依賴關係

本範例包含 dependee(被依賴方)與 depender(依賴方)兩個專案,驗證兩大核心行為:

  1. 被依賴專案宣告的第三方庫會自動成為依賴專案的傳遞依賴。
  2. 依賴專案可透過 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

關鍵檔案內容

dependee/ivy.xml

<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。

depender/ivy.xml

<ivy-module version="1.0">
  <info organisation="org.apache" module="depender"/>
  <dependencies>
    <dependency name="dependee" rev="latest.integration"/>
  </dependencies>
</ivy-module>

依賴 org.apache#dependee 的最新整合版本(組織預設繼承自當前模組)。

Ivy 設定檔解析

<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>
  • projects:檔案系統解析器,專解析內部專案(dependee)。
  • libraries:Ibiblio 解析器,連接 Maven Central 解析第三方庫(不使用 POM)。
  • modules 規則:指定 org.apache#dependee 走 projects 解析器,其餘走預設 libraries。

完整操作流程

步驟 1:清理環境

在 src/example/dependence 執行 ant 清理建構產物與 Ivy 快取。

步驟 2:發布 dependee v1

進入 dependee 目錄執行 ant publish。日誌顯示:

  • 從 libraries 下載 commons-lang-2.0.jar。
  • 編譯、打包、發布 dependee v1 到 repository/standalone-1.jar 與 standalone-1.xml。

步驟 3:執行 depender(首次)

進入 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 運作正常。

步驟 4:發布 dependee v2

再次在 dependee 執行 ant publish,版本號自動遞增為 2。儲存庫現有兩版本:

dependee-1.jar  dependee-1.xml  dependee-2.jar  dependee-2.xml

步驟 5:depender 自動獲取最新版

再次執行 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 在專案間依賴管理的核心優勢:傳遞依賴自動傳播、最新版本自動解析、本地/遠端儲存庫靈活路由。這為團隊內部模組的持續整合與版本演進奠定了堅實基礎。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved