<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Sky's blog

    我和我追逐的夢(mèng)

    常用鏈接

    統(tǒng)計(jì)

    其他鏈接

    友情鏈接

    最新評(píng)論

    ivy教程(4)-多解析器


        這個(gè)例子演示模塊是如何被多解析器獲得的。使用多解析器在很多情況下是非常有用的,這里是一些例子:

        * 來(lái)自發(fā)行的單獨(dú)的集成構(gòu)建
        * 為第三方模塊使用公共倉(cāng)庫(kù)并且為內(nèi)部模塊使用私有倉(cāng)庫(kù)
        * 使用一個(gè)倉(cāng)庫(kù)來(lái)存儲(chǔ)那些在無(wú)法管理的公共倉(cāng)庫(kù)里里面的不清晰的模塊
        * 使用本地倉(cāng)庫(kù)來(lái)暴露在一個(gè)開(kāi)發(fā)人員的位置上生成的構(gòu)建

        在ivy中,多解析器的使用是通過(guò)一個(gè)名為解析器鏈的復(fù)合解析器來(lái)支持的。

        在我們的例子中,我們將簡(jiǎn)單的展示如何使用兩個(gè)解析器,一個(gè)在本地倉(cāng)庫(kù)而另一個(gè)使用maven2倉(cāng)庫(kù)。

        1)  項(xiàng)目描述

        1. 項(xiàng)目: chained-resolvers

        項(xiàng)目非常簡(jiǎn)單,只包含一個(gè)簡(jiǎn)單的類(lèi): example.Hello.

        它依賴兩個(gè)類(lèi)庫(kù):Apache commons-lang 和一個(gè)小的test類(lèi)庫(kù)(源文件被包含在jar文件中).test類(lèi)庫(kù)被項(xiàng)目使用用于將字符串轉(zhuǎn)換為大寫(xiě),而commons-lang用來(lái)以大些書(shū)寫(xiě)同樣的字符串。

        這是項(xiàng)目的內(nèi)容:

        * build.xml: 項(xiàng)目的ant 構(gòu)建文件
        * ivy.xml: ivy項(xiàng)目文件
        * src\example\Hello.java: 項(xiàng)目?jī)H有的一個(gè)類(lèi)

        讓我們看一下ivy.xm文件:
    <ivy-module version="1.0">
        
    <info organisation="org.apache" module="chained-resolvers"/>
        
    <dependencies>
            
    <dependency org="commons-lang" name="commons-lang" rev="2.0"/>
            
    <dependency name="test" rev="1.0"/>
        
    </dependencies>
    </ivy-module>

        和我們期望的一樣,ivy文件聲明依賴于兩個(gè)項(xiàng)目使用的依賴:commons-lang 和 test.注意我們沒(méi)有指定test依賴的組織,在這種情況下ivy假定為和聲明的模塊同樣的組織,換句話說(shuō),在這個(gè)案例中是org.apache。

        2. ivy設(shè)置

        ivy設(shè)置在設(shè)置目錄中生成,它只包含一個(gè)文件: ivysettings.xml.
    <ivysettings>
      
    <settings defaultResolver="chain-example"/>
      
    <resolvers>
        
    <chain name="chain-example">
          
    <filesystem name="libraries">
            
    <artifact pattern="${ivy.settings.dir}/repository/[artifact]-[revision].[ext]" />
          
    </filesystem>
          
    <ibiblio name="ibiblio" m2compatible="true" />
        
    </chain>
      
    </resolvers>
    </ivysettings>

        3. 設(shè)置標(biāo)簽
        這個(gè)標(biāo)簽用一些參數(shù)初始化ivy.這里只使用了一個(gè),默認(rèn)使用的解析器的名稱(chēng)。

        4. 解析器標(biāo)簽

        在這個(gè)標(biāo)簽下,我們可以找到ivy將使用的解析器的描述。在我們的例子中,我們僅使用一個(gè)解析器,稱(chēng)為"chain-example",它非常特殊在于它定義了一個(gè)解析器列表(或言之鏈)。
        放在在鏈中的解析器有:

        * libraries : 這是一個(gè)文件解析器。這個(gè)解析器被配置為在包含ivysettings.xml文件的目錄下的"repository"子目錄查找制品。
        * ibiblio : 這個(gè)解析器很特殊。它查找ibiblio maven倉(cāng)庫(kù)來(lái)獲取類(lèi)庫(kù)。

        就這樣,我們配置好了解析器鏈。

        2) walkthrough
        步驟 1: 準(zhǔn)備
        打開(kāi)一個(gè)dos或者shell串口,并進(jìn)入"chained-resolvers"目錄。

        步驟 2: 清理目錄樹(shù)
        在提示符下: ant

        這將清理完整的項(xiàng)目目錄樹(shù)和ivy緩存。每次你想清理這個(gè)例子的時(shí)候你都可以這樣做。
        在幾乎所有的例子中,我們提供clean target作為默認(rèn)的target。既然大部分例子使用相同的ivy緩存,每次你調(diào)用這個(gè)target時(shí)你將清理這個(gè)ivy緩存。
        清理ivy緩存通常你可以放心的做(除了性能外):它僅僅是緩存,所有的東西都可以從倉(cāng)庫(kù)中再次獲得。對(duì)于從maven2過(guò)來(lái)的人來(lái)說(shuō),這聽(tīng)起來(lái)有點(diǎn)奇怪,但是記住在ivy中,緩存不是本地倉(cāng)庫(kù),東西被隔離地保持干凈。

        步驟 3: 運(yùn)行項(xiàng)目
        進(jìn)入chainedresolvers-project目錄,并簡(jiǎn)單運(yùn)行ant。
    I:\chained-resolvers\chainedresolvers-project>ant
    Buildfile: src\example\chained-resolvers\chainedresolvers-project\build.xml

    resolve:
    [ivy:retrieve] :: Ivy 2.0.0-beta1-local-20071104204849 - 20071104204849 :: http://ant.apache.org/ivy/ ::
    [ivy:retrieve] :: loading settings :: file = C:\dev\data\opensource_workspace\ivy\src\example\chained-resolvers\config\ivysettings.xml
    [ivy:retrieve] :: resolving dependencies :: [ org.apache | chained-resolvers | working@BEN-ScokartG ]
    [ivy:retrieve]     confs: [default]
    [ivy:retrieve]     found [ commons-lang | commons-lang | 2.0 ] in ibiblio
    [ivy:retrieve]     found [ org.apache | test | 1.0 ] in libraries
    [ivy:retrieve] downloading http://www.ibiblio.org/maven/commons-lang/jars/commons-lang-2.0.jar...
    [ivy:retrieve]  ............................................................................................
    [ivy:retrieve] 
    ............................................................................................(165kB)
    [ivy:retrieve] .. (0kB)
    [ivy:retrieve]     [SUCCESSFUL ] [ commons-lang | commons-lang | 2.0 ]/commons-lang.jar[jar] (5928ms)
    [ivy:retrieve] downloading C:\dev\data\opensource_workspace\ivy\src\example\chained-resolvers\config\repository\test-1.0.jar...
    [ivy:retrieve] .. (1kB)
    [ivy:retrieve]     [SUCCESSFUL ] [ org.apache | test | 1.0 ]/test.jar[jar] (10ms)
    [ivy:retrieve] :: resolution report ::
        ---------------------------------------------------------------------
        |                  |            modules            ||   artifacts   |
        |       conf       | number| search|dwnlded|evicted|| number|dwnlded|
        ---------------------------------------------------------------------
        |      default     |   2   |   2   |   0   |   0   ||   2   |   2   |
        ---------------------------------------------------------------------
    [ivy:retrieve] :: retrieving :: [ org.apache | chained-resolvers ]
    [ivy:retrieve]     confs: [default]
    [ivy:retrieve]     2 artifacts copied, 0 already retrieved

    run:
        [mkdir] Created dir: C:\dev\data\opensource_workspace\ivy\src\example\chained-resolvers\chainedresolvers-project\build
        [javac] Compiling 1 source file to C:\dev\data\opensource_workspace\ivy\src\example\chained-resolvers\chainedresolvers-project\build
         [java] standard message :example world !
         [java] capitalized by org.apache.commons.lang.WordUtils : Example World !
         [java] upperCased by test.StringUtils : EXAMPLE WORLD !

    BUILD SUCCESSFUL
    Total time: 12 seconds


        我們能看到在resolve任務(wù)的日志中,兩個(gè)依賴被獲取(2個(gè)制品)并被復(fù)制到ivy緩存目錄(2個(gè)下載)。

        run target成功地使用了來(lái)自ibiblio倉(cāng)庫(kù)的commons-lang.jar和來(lái)自本地倉(cāng)庫(kù)中的test.jar

        3) 更進(jìn)一步

        這個(gè)非常簡(jiǎn)單的例子有助于看到如何對(duì)在一個(gè)鏈中的兩個(gè)解析器進(jìn)行基本的設(shè)置。對(duì)于那些想知道這個(gè)解析器提供的所有特性的人,可以查看鏈解析器的參考文檔。

        從這個(gè)基本的例子中尼可以得到的最有趣的事情是:

        * 鏈并不局限于兩個(gè)內(nèi)嵌解析器,你可以使用任何你想要的數(shù)目。
        * 通過(guò)設(shè)置returnFirst="true",你可以得到一個(gè)一旦發(fā)現(xiàn)給定模塊就停止的鏈。
        * 通過(guò)設(shè)置dual="true",整個(gè)完整的鏈將被用于模塊描述符和制品,而當(dāng)dual="false",在鏈中找到模塊描述符(如果有任何一個(gè))的解析器將被用于查找制品。


    posted on 2009-09-25 15:28 sky ao 閱讀(1828) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): project building

    主站蜘蛛池模板: 免费在线观看h片| 亚洲国产成人久久综合一| 久久精品国产亚洲av麻豆蜜芽| 黄色毛片免费网站| 国产高清免费观看| 亚洲精品宾馆在线精品酒店| 成人毛片免费网站| 亚洲狠狠ady亚洲精品大秀| 久久国产精品免费专区| 亚洲国产高清视频| 中文字幕免费观看| 亚洲精品国产第1页| 黄色片在线免费观看| 亚洲 欧洲 自拍 另类 校园| 亚洲免费一级视频| 亚洲中文字幕无码久久| 亚洲精品岛国片在线观看| 曰韩无码AV片免费播放不卡| 亚洲综合av永久无码精品一区二区| 丰满妇女做a级毛片免费观看| 精品亚洲一区二区三区在线播放| 五月亭亭免费高清在线| 西西人体大胆免费视频| 亚洲国产综合精品中文第一区| 日本人的色道免费网站| 最新亚洲人成无码网www电影| 国产又大又粗又硬又长免费| 老汉精品免费AV在线播放| 亚洲成a∨人片在无码2023| 久久久久亚洲精品天堂久久久久久| 91免费在线视频| 亚洲成av人片天堂网无码】| 在线观看亚洲人成网站| 久久精品国产亚洲AV不卡| 成人免费视频试看120秒| 中文字幕免费人成乱码中国| 亚洲国产电影在线观看| 日韩亚洲国产二区| 2020久久精品国产免费| 羞羞视频免费网站在线看| 爱情岛论坛亚洲品质自拍视频网站|