ivy中文參考文檔(5)-ivy如何工作
前面已經(jīng)介紹了ivy主要的術(shù)語(yǔ)和概念,現(xiàn)在是時(shí)候說(shuō)明ivy如何工作的了。不同位置下模塊的通常周期

更多細(xì)節(jié)請(qǐng)查考ant任務(wù)。
一. 配置
ivy需要配置以便能夠解析依賴。這個(gè)配置通常是通過(guò)配置文件來(lái)完成的,配置文件定義了一系列的依賴解析器。每個(gè)解析器能夠發(fā)現(xiàn)ivy文件和/或制品,提供簡(jiǎn)單信息諸如組織,模塊,修訂版本,制品名字,制品類型和制品擴(kuò)展名。
配置通常負(fù)責(zé)支出哪個(gè)解析器應(yīng)該用于解析哪個(gè)模塊。這個(gè)配置僅僅取決于你的環(huán)境,例如,在哪里可以找到模塊和制品。
當(dāng)沒有給出任何配置時(shí)將使用默認(rèn)配置。這個(gè)配置實(shí)用ivyrep來(lái)解析所有模塊。
二. 解析
解析的時(shí)間是當(dāng)ivy實(shí)際解析一個(gè)模塊的依賴的時(shí)刻。它第一次需要訪問模塊的ivy文件來(lái)解析依賴。
然后,在這個(gè)文件中定義的每個(gè)依賴,它將請(qǐng)求適當(dāng)?shù)慕馕銎?根據(jù)配置)來(lái)查找模塊(例如,可能是一個(gè)ivy文件,或者如果沒有找到ivy文件則是它的制品)。它同樣使用基于緩存的文件系統(tǒng)以避免請(qǐng)求一個(gè)已經(jīng)存在在緩存中的依賴。
如果解析器是組合而成的(例如鏈?zhǔn)交蛘唠p重解析器),為了查找模塊可能實(shí)際調(diào)用多個(gè)解析器。
當(dāng)找到依賴模塊,它的ivy文件被下載到ivy緩存。然后ivy檢查它是否有它自己的依賴,在這種情況下循環(huán)游歷依賴圖。
在整個(gè)游歷過(guò)程中,盡可能快的進(jìn)行沖突管理來(lái)阻止對(duì)模塊的訪問。
當(dāng)ivy游歷完整個(gè)圖形,它請(qǐng)求解析器去下載每個(gè)依賴相應(yīng)的不在緩存中并且不被沖突管理器排斥的制品。所有的下載都將加入到ivy緩存中。
最后,在緩存中將生成一個(gè)xml報(bào)告,讓ivy可以容易的得知模塊有哪些依賴而不必在此游歷整個(gè)圖型。
在這個(gè)解析步驟之后,可能有兩個(gè)主要步驟:要不創(chuàng)建一個(gè)帶有緩存中制品的路徑,要不復(fù)制他們到另外一個(gè)目錄結(jié)構(gòu)。
三. 獲取
在ivy中被稱為獲取的是從緩存中復(fù)制制品到另外的目錄結(jié)構(gòu)的行為。這個(gè)行為是通過(guò)使用模式來(lái)實(shí)現(xiàn),模式為ivy指明這些文件可以從哪里復(fù)制。
為此,ivy使用緩存中它將獲取的模塊對(duì)應(yīng)的xml報(bào)告來(lái)獲知哪些制品應(yīng)該被復(fù)制。
為了達(dá)到最佳性能它也檢查文件是否沒有被復(fù)制。
四. 從緩存中生成路徑
在某些情況下,直接使用緩存中的制品更加合適。ivy能夠使用在解析時(shí)生成的xml報(bào)告來(lái)生成一個(gè)包含所有需要的制品的路徑。
當(dāng)為IDE生成插件時(shí)這個(gè)方式特別有效。
五. 報(bào)告
ivy也可以生成方便閱讀的依賴解析的報(bào)告描述。
這個(gè)是通過(guò)使用一個(gè)簡(jiǎn)單的xsl轉(zhuǎn)換在解析時(shí)生成的xml報(bào)告來(lái)實(shí)現(xiàn)的。
六. 發(fā)布
最后,ivy可以被用于發(fā)布一個(gè)模塊的特別的修訂版本,以便這個(gè)版本在未來(lái)的解析中可以得到。這個(gè)任務(wù)通常被手工或者被一個(gè)持續(xù)集成服務(wù)器調(diào)用。
posted on 2009-07-08 23:37 sky ao 閱讀(1727) 評(píng)論(0) 編輯 收藏 所屬分類: project building