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

Ivy 教程 (4):多解析器鏈

     編輯:Java 相關知識

為何需要解析器鏈?

實際專案常需從多個來源解析依賴,常見場景包括:

  • 第三方庫走公共儲存庫,內部模組走私有儲存庫。
  • 釋出版與整合版分離存放。
  • 本地開發版本優先,找不到再回退團隊共享庫。
  • 補足公共儲存庫缺失或錯誤的模組。

Ivy 透過 Chain Resolver(解析器鏈) 組合多個解析器,按順序查找,滿足上述需求。

範例:本地庫 + Maven Central

專案 chained-resolvers 依賴兩個模組:

  • commons-lang:2.0(第三方,來自 Maven Central)
  • org.apache#test:1.0(內部測試庫,來自本地檔案系統)

鏈式解析器設定

<ivysettings>
  <settings defaultResolver="chain-example"/>
  <resolvers>
    <chain name="chain-example">
      <filesystem name="libraries">
        <artifact pattern="${ivy.settings.dir}/repository/[artifact]-[revision].[ext]"/>
      </filesystem>
      <ibiblio name="ibiblio" m2compatible="true"/>
    </chain>
  </resolvers>
</ivysettings>

運作原理

  1. 鏈中第一個解析器 libraries(檔案系統)優先查找本地 repository/ 目錄。
  2. 若找不到,自動回退到第二個解析器 ibiblio(Maven Central)。
  3. 解析順序即優先權順序。

執行結果

進入 chained-resolvers/chainedresolvers-project 執行 ant:

found [ commons-lang | commons-lang | 2.0 ] in ibiblio
found [ org.apache | test | 1.0 ] in libraries
| default | 2 | 2 | 0 | 0 || 2 | 2 |
  • test 從本地 libraries 解析器獲取。
  • commons-lang 從 ibiblio 獲取。
  • 程式成功編譯執行,同時展示兩個庫的功能。

進階特性

  • 不限兩個解析器:鏈可包含任意數量解析器。
  • returnFirst="true":預設值,找到即停止;設為 false 可聚合多來源結果(罕用)。
  • dual="true":整條鏈同時用於 metadata 與 artifact 查找;dual="false"(預設)時,找到 metadata 的解析器將被綁定用於該模組的 artifact 下載。

結語

解析器鏈是 Ivy 靈活儲存庫路由的基石。透過簡單的宣告式配置,即可實現企業級的多來源依賴解析策略,完美支援本地開發、團隊共享、公共獲取的分層工作流。

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