1) 解析
解析任務實際解析在ivy文件中描述的依賴,並將解析後的依賴放置到ivy緩存中。
如果在resolve任務前沒有調用configure任務,則將使用默認的configuration (等同於不帶參數的調用configure).
在這個任務調用之後,在ant中有四個屬性被設置:
ivy.organisation
設置為在用於解析的ivy文件中找到的組織名
ivy.module
設置為在用於解析的ivy文件中找到的模塊名
ivy.revision
設置為在用於解析的ivy文件中找到的修訂版本名,或者如果在制定的文件中沒有修訂版本名則是新生成的修訂版本名。
ivy.resolved.configurations
設置為解析好的configuration列表,逗號分隔。
從1.2起:
如果在最後一次解析後被解析的依賴發生了變化,一個額外的屬性將被設置為true,否則為false。
ivy.deps.changed
從2.0起:
如果你設置參數checkIfCompiled為false(默認是true以保持向後兼容),屬性ivy.deps.changed將不被設置。當你有進行多配置下的多 模塊構建時這容許完善你的構建。
從2.0起:
額外的,如果resolveId屬性被設置,下列屬性也將被設置:
* ivy.organisation.${resolveId}
* ivy.module.${resolveId}
* ivy.revision.${resolveId}
* ivy.resolved.configurations.${resolveId}
* ivy.deps.changed.${resolveId}
當ivy完成解析任務時,它將輸出概要來說明解析了什麼。概要看起來像這樣:
---------------------------------------------------------------------
| | modules || artifacts |
| conf | number| search|dwnlded|evicted|| number|dwnlded|
---------------------------------------------------------------------
| default | 4 | 0 | 0 | 0 || 4 | 0 |
---------------------------------------------------------------------
這個表單給出一些關於依賴解析的統計。每行對應於一個解析了的配置。這個表單被劃分為兩個部分:
modules
number
在這個配置下被解析的依賴模塊的總數目,包括間接的依賴。
search
這是需要訪問倉庫的依賴模塊的數目。如果模塊還不在緩存中則需要訪問倉庫,或者要求最新版本,或者一些其他情況(例如,根據 checkModified)
dwnlded
從倉庫下載的依賴的ivy文件的數目。使用清理好的緩存,這個數目可以比模塊的總數目少,如果一些依賴沒有提供ivy文件。
evicted
被沖突管理器逐出的依賴模塊的數目。
artifacts
number
在給定的配置中解析的制品的總數目。
dwnlded
從倉庫中實際下載的制品的數目。
2) Inline模式
從1.4起 inline模式容許在沒有ivy文件的情況下通過直接設置需要從倉庫中被解析的模塊調用resolve。對於安裝發布的軟件特別有用 ,例如ant任務。當inline設置為true,組織模塊和修訂版本屬性被用於指定哪個模塊應該從倉庫中解析。
注意:如果你想要設置標准ivy屬性或者通過其他post-resolve任務重用inline解析的結果,類似retrieve, cachepath, report, ..., 你必須設置keep屬性為true。
3) Resolve 模式
從1.4起 解析模式容許定義當執行解析時ivy應該如果使用依賴修訂版本約束。
有兩個模式可用:
default
在這個模式下使用默認修訂版本約束(通過 dependency 元素的rev屬性來表示)
dynamic
在這個模式下使用動態修訂版本約束(通過 dependency 元素的revConstraint屬性來表示)
4) 並發
在解析的過程中,ivy在解析緩存中創建一個文件。這個文件的創建並不是為了支持並發,意味著你不能在同樣的解析緩存中,有同樣 模塊的同樣的resolveId的,兩個並發解析。
給開發人員的備注:
在這個任務調用之後,有一個被解析的模塊描述符的引用被設置在ant項目中,id為
"ivy.resolved.descriptor"
5) 屬性
Attribute
Description
Required
file
path to the ivy file to use for resolution
用來解析的ivy文件的路徑
No. 默認是${ivy.dep.file}或在inline模式下不設值
conf
a comma separated list of the configurations to resolve, or '*'.
用於解析的逗號分隔的配置列表,或 者'*'
Since 2.0, you can also use '*(private)', '*(public)'. Note that when inline is true, the configuration '*' is equivalent as '*(public)'.
從2.0起 你也可以使用'*(private)', '*(public)'.注意當inline為true,配置'*'等 同於'*(public)'.
No. 默認是${ivy.configurations}
refresh
true to force Ivy to resolve dynamic revision in this resolve process, false to use cached resolved revision since 2.0
true 強制ivy在這次解析過程中解析動態修訂版本,false使用緩存的解析好的修訂版本,從2.0起
No. 默認是false
resolveMode
the resolve mode to use for this dependency resolution process since 2.0
這次依賴解析過程要使用的解 析模式,從2.0起
No. 默認使用settings中設置的解析模式
inline
true to use inline mode, false to resolve an ivy file since 1.4
true使用inline模塊,false解析ivy文件 ,從1.4起
No. 默認為false
keep
true to keep the results of the resolve in memory, false to discard them. When this is false, the standard ivy properties won't be set and other postresolve-tasks (like retrieve and cachepath) won't be able to resuse the results of this resolve!
true在內存中保持這次的解析的結果,false 拋棄他們。當這個是false時,標准ivy屬性不會設置而且其他 post-resolve任務(類似retrieve和cachepath)將不能重用這次解析的結果!
No. 對於inline模式默認是false,其他情況默認為true
organisation
the organisation of the module to resolve in inline mode since 1.4
在inline模式下用於解析的模塊的組 織名,從1.4起
Yes 在inline模式下必須,其他不是
module
the name of the module to resolve in inline mode since 1.4
在inline模式下用於解析的模塊的名稱,從1.4 起
Yes 在inline模式下必須,其他不是
revision
the revision constraint to apply to the module to resolve in inline mode since 1.4
在inline模式下適 用於要解析的模塊的修訂版本約束,從1.4起
No. 在inline模式下默認為 "latest.integration",在標准模式下不設置
branch
the name of the branch to resolve in inline mode (since 2.1.0)
在inline模式下用於解析的分支的名字(從 2.1.0起)
在inline模式下默認為沒有分支,標准模式下沒有意義
type
comma separated list of accepted artifact types (since 1.2)
逗號分隔的可以接受的制品類型列表(從1.2起 )
No. 默認為${ivy.resolve.default.type.filter}
haltonfailure
true to halt the build on ivy failure, false to continue
true 在ivy失敗時掛起整個構建,false 繼續
No. 默認為true
failureproperty
the name of the property to set if the resolve failed since 1.4
在解析失敗失敗時設置的屬性名稱,從 1.4起
No. 默認沒有屬性被設置
transitive
true to resolve dependencies transitively, false otherwise since 1.4
true解析間接依賴,false 不解析 ,從1.4起
No. 默認為true
showprogress
true to show dots while downloading, false otherwise
true在下載過程中顯示點,false不顯示
No. 默認為true
validate
true to force ivy files validation against ivy.xsd, false to force no validation
true強制對ivy文件用 ivy.xsd驗證,false強制不驗證。
No. 默認為ivy的默認值(在配置文件中配置)
settingsRef
A reference to the ivy settings that must be used by this task (since 2.0)
必須在這次任務中使用的ivy 設置的引用(從2.0起)
No, 默認使用'ivy.instance'
resolveId
後面可以用來引用這次解析的結果的id
No, 默認為'[org]-[module]'.
log
在解析過程中使用的日志設置(從2.0起)
可使用的選項是:
default
默認日志設置,所 有通常的消息都將被輸出到控制台
download-only
不輸出除下載信息外的所有通常的消息。如果每個東西都在緩 存裡面的解析則不會輸出任何消息。
quiet
所有消息都不輸出,讓整個解析過程保持安靜除非發生錯誤
No, 默認為'default'.
checkIfChanged
When set to true, the resolve will compare the result with the last resolution done on this module, with those configurations
當設置為true時,解析將比較這次的結果和這個模塊的最後一次解析,使用那些配置
No, 默認為'true'
6) 示例
<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"/>
解析在path/to/ivy.xml文件配置default和test中聲明的依賴。
<ivy:resolve file="path/to/ivy.xml" type="jar"/>
解析在path/to/ivy.xml文件中聲明的所有依賴,但是只下載jar制品。
<ivy:resolve organisation="apache" module="commons-lang" revision="2+" inline="true" />
從倉庫中解析commons-lang模塊的2+修訂版本,和它的依賴。