依賴解析器是 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]
標記替換值取決於模式用途(賦值給制品或模組),所有可用標記:
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 能匹配模式所有檔案,再用最新策略判斷哪個最新。
衝突管理器可在衝突模組修訂版本列表中選擇保留者。相同組織/模組名對之修訂版本稱為衝突列表。可用列表見衝突管理器頁面。配置細節見 Ivy 檔案參考衝突章節。