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

Ivy 參考文檔:主要概念(上)

     編輯:Java 相關知識

一. 依賴解析器

依賴解析器是 Ivy 中可插入的類:

  • 發現 ivy 檔案中的依賴
  • 下載依賴的制品

「下載」概念廣泛:制品可在網站或本地檔案系統。下載指從倉庫取檔案放入 Ivy 快取。解析器職責是找到 ivy 檔並下載制品,有助實現不同解析策略。可視為描述倉庫的類。可用解析器列表見配置章節。

二. 模組配置說明

模組配置是使用或建構模組的方式。可在配置中定義模組發布哪些制品,及需要哪些依賴。因 Ivy 依賴以模組而非制品表述,能在定義模組中定義依賴配置至關重要,即配置映射。

若僅用單一模組不想操心配置,可忽略它們。它們依然存在,Ivy 無法無配置工作。但大多數情況未定義時,Ivy 假設模組制品在所有配置發布,所有配置中所有依賴配置皆須要,單一模組下正常工作。但想在模組內分隔事物、更多控制發布內容並透過依賴解析時,配置滿足大多數需求。定義細節請參考 Ivy 檔案文檔,配置教程是學習好地方。

三. 變數

配置過程中 Ivy 允許定義 Ivy 變數,類似 Ant 屬性且用法相似。特別是配置檔中用 property 標籤載入含 Ivy 變數和值的屬性檔。

最大差別:Ivy 變數可被覆蓋,Ant 屬性不可;且定義環境不同。配置完成時所有 Ant 屬性導入 Ivy 變數(從 Ant 調用 Ivy 時)。意謂調用配置後定義 Ant 屬性無法作為 Ivy 變數存取。反之 Ivy 變數不可導出到 Ant,勿嘗試作為 Ant 屬性使用。

使用語法同 Ant:${variablename}。變數代入盡可能快:遇到引用若已定義即嘗試代入,後續改動不影響已代入值。Ant 環境中,一串變數透過 Ant 屬性檔載入機制預設賦值(實際先作為 Ant 屬性載入再導入),甚至 Ant 屬性自身在載入時立即代入,使得僅透過 ivysettings.properties 覆蓋某些變數不可能。某些變數只能透過 Ant 屬性重載。

重要區別:Ivy 變數與 Ivy 模式標記不同。請翻閱模式章節理解模式標記。

四. 模式

Ivy 模式在許多依賴解析器和任務中使用,構成 Ivy 工作方式的簡單方法。

範例

提供查找制品模式配置檔案系統依賴解析器:

myrepository/[organisation]/[module]/[type]s/[artifact]-[revision].[ext]

表示倉庫在 myrepository 目錄,下有組織和模組目錄,每模組一目錄,再下有各制品類型目錄,制品命名為 id-修訂版本.擴展名。

標記與變數混用

${repository.dir}/[organisation]/[module]/[type]s/[artifact]-[revision].[ext]

標記替換值取決於模式用途(賦值給制品或模組),所有可用標記:

  • [organisation] 組織名
  • [module] 模組名
  • [branch] 分支名
  • [revision] 修訂版本
  • [artifact] 制品名/ID
  • [type] 制品類型
  • [ext] 制品副檔名
  • [conf] 配置名
  • [originalname] (1.4 起) 原始制品名(含副檔名)

1.2 起 [organization] 可替代 [organisation]。1.3 起模式可用可選部分:用括號界定,括號中只能有一標記。標記無值則括號間文字被忽略。例:"abc(def[type]ghi)",type="jar"→"abcdefjarghi",type=null→"abc"。實際例:[artifact](-[revision]).[ext] 同時接受 myartifact-1.0.jar 和 myartifact.jar。1.4 起附加屬性可在模式中作為任意標記使用。

五. 最新策略

Ivy 常需知兩修訂版本哪個最新,用「最新策略」概念。有多種方法判斷,可選現有或插入自訂。先決條件:Ivy 需有能力考慮模組多修訂版本,故需從目錄取檔案列表,需依賴解析器。若 Ivy 未取得最新修訂版本,請檢查解析器是否與最新修訂版本相容。為取得不同修訂版本,多數情況需在模式用 [revision] 標記,使 Ivy 能匹配模式所有檔案,再用最新策略判斷哪個最新。

三個內建策略

  • latest-time:比較修訂版本時間。雖通常較好但有代價:如用 ivyrep,Ivy 須詢問 HTTP 伺服器每個 ivy 檔日期
  • latest-revision:字串比較修訂版本,用近似 PHP version_compare 算法。評估特殊文本含義:1.0-dev1 < 1.0-alpha1 < 1.0-rc1 < 1.0 < 1.0.1
  • latest-lexico:字串字典序比較(Java String compareTo)

六. 衝突管理器

衝突管理器可在衝突模組修訂版本列表中選擇保留者。相同組織/模組名對之修訂版本稱為衝突列表。可用列表見衝突管理器頁面。配置細節見 Ivy 檔案參考衝突章節。

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