ivy中文參考文檔(18)-ant任務(wù)(6)-deliver
1) deliver交付當(dāng)前模塊的解析好的描述符,而且可能執(zhí)行依賴(lài)的遞歸交付。
這個(gè)任務(wù)主要做兩個(gè)事情:
1. 生成一個(gè)解析好的ivy 文件
這個(gè)任務(wù)生成一個(gè)當(dāng)前模塊的解析好的描述符,基于最后一次解析。解析好的ivy文件包含交付的模塊的已更新信息,例如修訂版本和狀態(tài)。
此外,所有被包含的配置的文件將包含在ivy文件中,而且變量被他們的值替代。
最終,在解析好的ivy文件中,動(dòng)態(tài)修訂版本被在解析過(guò)程中找到的靜態(tài)的修訂版本替換,因此這些ivy文件后面可以安全的使用來(lái)獲得相同的依賴(lài)(前提條件是修訂版本唯一的標(biāo)識(shí)一個(gè)模塊,這是ivy正常使用的基礎(chǔ))。
從1.3起 動(dòng)態(tài)修訂版本被靜態(tài)修訂版本的替換可以被關(guān)閉,因此動(dòng)態(tài)修訂版本被保留在ivy文件中。這對(duì)于發(fā)行的模塊描述符是完全解析好的推薦標(biāo)準(zhǔn)是一個(gè)例外,所以請(qǐng)小心使用。
2. 執(zhí)行遞歸交付
僅在delever target被設(shè)置給delever任務(wù)時(shí)才這樣做。
如果delever target被設(shè)置,則為每個(gè)和這個(gè)任務(wù)設(shè)置的delever狀態(tài)對(duì)比沒(méi)有suffisant狀態(tài)的依賴(lài),它會(huì)被調(diào)用(通過(guò)antcall)。這意味著如果你交付一個(gè)集成修訂版本,遞歸交付不會(huì)進(jìn)行。
如果你交付一個(gè)里程碑或者發(fā)行修訂版本,delever target將和每個(gè)集成依賴(lài)一起被調(diào)用。
delever target被調(diào)用時(shí)有下面的屬性可用:
- dependency.name 遞歸交付的依賴(lài)的名稱(chēng)
- dependency.published.status 將交付的依賴(lài)的狀態(tài)
- dependency.published.version 將交付的依賴(lài)的修訂版本
- dependency.version 將交付的依賴(lài)的修訂版本
- recursive.delivery.status 設(shè)置被要求交付的所有依賴(lài)的狀態(tài)
- recursive.delivery.version 設(shè)置被要求交付的所有依賴(lài)的版本
交付的ivy文件將使用那些在這里給出的更新它的依賴(lài)的修訂版本。
2) deliver和publish
交付任務(wù)大多數(shù)情況下并不顯式調(diào)用,而且通過(guò)publish任務(wù)自動(dòng)調(diào)用。因此,什么時(shí)候應(yīng)該顯示的調(diào)用deliver任務(wù)呢?當(dāng)你真正需要區(qū)分什么是deliver任務(wù)產(chǎn)生的,什么是publish任務(wù)產(chǎn)生的時(shí)候。或者說(shuō),上傳一個(gè)模塊到倉(cāng)庫(kù)。
如果你想在上傳之前處理產(chǎn)生的ivy文件(如果你想自動(dòng)添加更多信息如使用SCM 標(biāo)簽,執(zhí)行release的用戶(hù),...),這將非常有用。
如果你想觸發(fā)一個(gè)遞歸交付并保證你如依賴(lài)一樣得到遞歸交付的模塊,它也將有用。在這種情況下你的構(gòu)建的順序可能像這樣:
- ivy:configure
- ivy:resolve
- ivy:deliver with recursive delivery
- ivy:resolve again with the ivy file generated by the recursive delivery
- do your build stuff (compile, jar, whatever)
- ivy:publish
- ivy:resolve
- ivy:deliver with recursive delivery
- ivy:resolve again with the ivy file generated by the recursive delivery
- do your build stuff (compile, jar, whatever)
- ivy:publish
3) 屬性
屬性 | 描述 | 必要 |
---|---|---|
deliverpattern | ivy文件交付時(shí)使用的正則表達(dá)式 |
不,默認(rèn)為${ivy.deliver.ivy.pattern} |
pubrevision | 發(fā)布時(shí)使用的修訂版本 |
不,默認(rèn)為${ivy.deliver.revision}如果設(shè)置了,或者解析好的修訂版本如果設(shè)置了,或者時(shí)間戳 |
pubbranch | the branch to use for the publication 發(fā)布時(shí)使用的分支 |
不,默認(rèn)為${ivy.deliver.branch}如果設(shè)置了,或者解析好的分支如果設(shè)置了,或者沒(méi)有(分支信息將不被更新) |
pubdate | the
publication date to use for the publication. This date should be either
'now', or a date given with the following pattern: yyyyMMddHHmmss |
No. Defaults to 'now' |
status | the status to use for the publication | No. Defaults to ${ivy.status} |
delivertarget | the target to call for recursive delivery | No. No recursive delivery is done by default |
validate | true to force ivy files validation against ivy.xsd, false to force no validation | No. Defaults to default ivy value (as configured in configuration file) |
replacedynamicrev | true to replace dynmic revisions by static ones in the delivered file, false to avoid this replacement (since 1.3) | No. Defaults to true |
settingsRef | A reference to the ivy settings that must be used by this task (since 2.0) | No, 'ivy.instance' is taken by default. |
conf | comma-separated list of configurations to include in the delivered file. Accepts wildcards. (since 2.0) | No. Defaults to all configurations |
generateRevConstraint | true to automatically generate a 'revConstraint' attribute in the deliverd file (see the dependency page for more info about this attribute), false to never generate this attribute (since 2.1.0) | No. Defaults to true |
4) 例子
交付一個(gè)ivy文件,不使用private設(shè)置:
<deliver conf="*(public)" />
posted on 2009-08-31 22:22 sky ao 閱讀(1315) 評(píng)論(0) 編輯 收藏 所屬分類(lèi): project building