1) deliver
交付當前模塊的解析好的描述符,而且可能執行依賴的遞歸交付。
這個任務主要做兩個事情:
1.生成一個解析好的ivy 文件
這個任務生成一個當前模塊的解析好的描述符,基於最後一次解析。解析好的ivy文件包含交付的模塊的已更新信息,例如修訂版本和 狀態。
此外,所有被包含的配置的文件將包含在ivy文件中,而且變量被他們的值替代。
最終,在解析好的ivy文件中,動態修訂版本被在解析過程中找到的靜態的修訂版本替換,因此這些ivy文件後面可以安全的使用來獲得 相同的依賴(前提條件是修訂版本唯一的標識一個模塊,這是ivy正常使用的基礎)。
從1.3起 動態修訂版本被靜態修訂版本的替換可以被關閉,因此動態修訂版本被保留在ivy文件中。這對於發行的模塊描述符是完全解 析好的推薦標准是一個例外,所以請小心使用。
2.執行遞歸交付
僅在delever target被設置給delever任務時才這樣做。
如果delever target被設置,則為每個和這個任務設置的delever狀態對比沒有suffisant狀態的依賴,它會被調用(通過antcall)。這 意味著如果你交付一個集成修訂版本,遞歸交付不會進行。
如果你交付一個裡程碑或者發行修訂版本,delever target將和每個集成依賴一起被調用。
delever target被調用時有下面的屬性可用:
dependency.name
遞歸交付的依賴的名稱
dependency.published.status
將交付的依賴的狀態
dependency.published.version
將交付的依賴的修訂版本
dependency.version
將交付的依賴的修訂版本
dependency.published.status和dependency.published.version 要求用戶通過ant輸入任務給出(默認行為),或者對於整個遞歸交付 過程總是相同,如果下列屬性被設置:
recursive.delivery.status
設置被要求交付的所有依賴的狀態
recursive.delivery.version
設置被要求交付的所有依賴的版本
通常交付任務自身引發另外一個ant build(使用ant 任務),雖然這取決於你。
交付的ivy文件將使用那些在這裡給出的更新它的依賴的修訂版本。
2) deliver和publish
交付任務大多數情況下並不顯式調用,而且通過publish任務自動調用。因此,什麼時候應該顯示的調用deliver任務呢?當你真正需要 區分什麼是deliver任務產生的,什麼是publish任務產生的時候。或者說,上傳一個模塊到倉庫。
如果你想在上傳之前處理產生的ivy文件(如果你想自動添加更多信息如使用SCM 標簽,執行release的用戶,...),這將非常有用。
如果你想觸發一個遞歸交付並保證你如依賴一樣得到遞歸交付的模塊,它也將有用。在這種情況下你的構建的順序可能像這樣:
- 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
3) 屬性
屬性 描述 必要 deliverpattern ivy文件交付時使用的正則表達式 不,默認為${ivy.deliver.ivy.pattern} pubrevision 發布時使用的修訂版本 不,默認為${ivy.deliver.revision}如果設置了,或者解析好的修訂版本如果設置了,或者時間戳 pubbranch the branch to use for the publication4) 例子
交付一個ivy文件,不使用private設置:
<deliver conf="*(public)" />