resolve 任務實際解析 ivy 檔案中描述的依賴,並將解析後的依賴放置到 Ivy 快取中。
若在 resolve 任務前未調用 configure 任務,則將使用預設的 configuration(等同於不帶參數調用 configure)。
任務調用後,Ant 中會設定以下四個屬性:
從 1.2 版起:若解析後的依賴發生變化,額外屬性 ivy.deps.changed 將被設為 true,否則為 false。
從 2.0 版起:若設定 checkIfChanged 為 false(預設 true 以向後相容),ivy.deps.changed 不會被設定。這在多配置下的多模組建構時很有用。
從 2.0 版起:若設定了 resolveId 屬性,以下屬性也將被設定:
Ivy 完成解析時會輸出摘要,例如:
---------------------------------------------------------------------
| | modules || artifacts |
| conf | number| search|dwnlded|evicted|| number|dwnlded|
---------------------------------------------------------------------
| default | 4 | 0 | 0 | 0 || 4 | 0 |
---------------------------------------------------------------------
表格分為兩部分:
允許在沒有 ivy 檔案的情況下,直接指定需從倉庫解析的模組。對於安裝發布的軟體(如 Ant 任務)特別有用。當 inline="true" 時,organisation、module 和 revision 屬性用於指定要解析的模組。
注意:若要設定標準 ivy 屬性或透過其他 post-resolve 任務重用 inline 解析結果(如 retrieve, cachepath, report 等),必須設定 keep="true"。
定義執行解析時 Ivy 應如何使用依賴修訂版本約束:
解析過程中,Ivy 在解析快取中建立一個檔案,此檔案建立並非為了支援併發,意即不能在同樣的解析快取中,對同樣模組的同樣 resolveId 進行兩個併發解析。
| 屬性 | 描述 | 必要 | 預設值 |
|---|---|---|---|
| file | 用於解析的 ivy 檔案路徑 | 否 | ${ivy.dep.file} 或 inline 模式下不設值 |
| conf | 要解析的配置列表,逗號分隔或 '*' | 否 | ${ivy.configurations} |
| refresh | true 強制解析動態修訂版本,false 使用快取版本(2.0 起) | 否 | false |
| resolveMode | 此依賴解析過程使用的解析模式(2.0 起) | 否 | settings 中設定的模式 |
| inline | true 使用 inline 模式,false 解析 ivy 檔案(1.4 起) | 否 | false |
| keep | true 在記憶體保持解析結果,false 捨棄。false 時標準屬性不設定,post-resolve 任務無法重用結果 | 否 | inline 模式預設 false,其他 true |
| organisation | inline 模式下要解析的模組組織名(1.4 起) | inline 模式下是 | - |
| module | inline 模式下要解析的模組名稱(1.4 起) | inline 模式下是 | - |
| revision | inline 模式下適用的修訂版本約束(1.4 起) | 否 | inline 模式下 "latest.integration" |
| branch | inline 模式下要解析的分支名稱(2.1.0 起) | 否 | inline 模式下無分支 |
| type | 可接受的制品類型列表(1.2 起) | 否 | ${ivy.resolve.default.type.filter} |
| haltonfailure | true Ivy 失敗時中止建構,false 繼續 | 否 | true |
| failureproperty | 解析失敗時設定的屬性名稱(1.4 起) | 否 | 無屬性設定 |
| transitive | true 解析傳遞依賴,false 不解析(1.4 起) | 否 | true |
| showprogress | true 下載時顯示進度點,false 不顯示 | 否 | true |
| validate | true 強制 ivy 檔案驗證,false 強制不驗證 | 否 | Ivy 預設值 |
| settingsRef | 必須使用的 Ivy 設定引用(2.0 起) | 否 | 'ivy.instance' |
| resolveId | 稍後引用此解析結果的 ID | 否 | '[org]-[module]' |
| log | 解析過程日誌設定(2.0 起) | 否 | 'default' |
| checkIfChanged | true 時比較結果與最後一次解析(2.0 起) | 否 | true |
<ivy:resolve file="path/to/ivy.xml"/>
解析 path/to/ivy.xml 中宣告的所有依賴。
<ivy:resolve file="path/to/ivy.xml" transitive="false" />
同上,但不解析傳遞依賴。
<ivy:resolve file="path/to/ivy.xml" conf="default, test"/>
解析 default 和 test 配置中宣告的依賴。
<ivy:resolve file="path/to/ivy.xml" type="jar"/>
解析所有依賴,但只下載 jar 制品。
<ivy:resolve organisation="apache" module="commons-lang" revision="2+" inline="true" />
從倉庫解析 commons-lang 模組的 2+ 修訂版本及其依賴。