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

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

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

    Sky's blog

    我和我追逐的夢

    常用鏈接

    統計

    其他鏈接

    友情鏈接

    最新評論

    ivy教程(4)-多解析器


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

        * 來自發行的單獨的集成構建
        * 為第三方模塊使用公共倉庫并且為內部模塊使用私有倉庫
        * 使用一個倉庫來存儲那些在無法管理的公共倉庫里里面的不清晰的模塊
        * 使用本地倉庫來暴露在一個開發人員的位置上生成的構建

        在ivy中,多解析器的使用是通過一個名為解析器鏈的復合解析器來支持的。

        在我們的例子中,我們將簡單的展示如何使用兩個解析器,一個在本地倉庫而另一個使用maven2倉庫。

        1)  項目描述

        1. 項目: chained-resolvers

        項目非常簡單,只包含一個簡單的類: example.Hello.

        它依賴兩個類庫:Apache commons-lang 和一個小的test類庫(源文件被包含在jar文件中).test類庫被項目使用用于將字符串轉換為大寫,而commons-lang用來以大些書寫同樣的字符串。

        這是項目的內容:

        * build.xml: 項目的ant 構建文件
        * ivy.xml: ivy項目文件
        * src\example\Hello.java: 項目僅有的一個類

        讓我們看一下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文件聲明依賴于兩個項目使用的依賴:commons-lang 和 test.注意我們沒有指定test依賴的組織,在這種情況下ivy假定為和聲明的模塊同樣的組織,換句話說,在這個案例中是org.apache。

        2. ivy設置

        ivy設置在設置目錄中生成,它只包含一個文件: 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. 設置標簽
        這個標簽用一些參數初始化ivy.這里只使用了一個,默認使用的解析器的名稱。

        4. 解析器標簽

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

        * libraries : 這是一個文件解析器。這個解析器被配置為在包含ivysettings.xml文件的目錄下的"repository"子目錄查找制品。
        * ibiblio : 這個解析器很特殊。它查找ibiblio maven倉庫來獲取類庫。

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

        2) walkthrough
        步驟 1: 準備
        打開一個dos或者shell串口,并進入"chained-resolvers"目錄。

        步驟 2: 清理目錄樹
        在提示符下: ant

        這將清理完整的項目目錄樹和ivy緩存。每次你想清理這個例子的時候你都可以這樣做。
        在幾乎所有的例子中,我們提供clean target作為默認的target。既然大部分例子使用相同的ivy緩存,每次你調用這個target時你將清理這個ivy緩存。
        清理ivy緩存通常你可以放心的做(除了性能外):它僅僅是緩存,所有的東西都可以從倉庫中再次獲得。對于從maven2過來的人來說,這聽起來有點奇怪,但是記住在ivy中,緩存不是本地倉庫,東西被隔離地保持干凈。

        步驟 3: 運行項目
        進入chainedresolvers-project目錄,并簡單運行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任務的日志中,兩個依賴被獲取(2個制品)并被復制到ivy緩存目錄(2個下載)。

        run target成功地使用了來自ibiblio倉庫的commons-lang.jar和來自本地倉庫中的test.jar

        3) 更進一步

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

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

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


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

    主站蜘蛛池模板: 久青草视频在线观看免费| 久久av免费天堂小草播放| 久久久免费的精品| 亚洲国产黄在线观看| 亚洲成a人一区二区三区| 亚洲人配人种jizz| 日本一区二区在线免费观看| 99在线精品免费视频九九视| 久久久无码精品亚洲日韩按摩 | 亚洲日本va午夜中文字幕久久| 亚洲一级特黄特黄的大片| 91精品免费不卡在线观看| 国产精品极品美女免费观看| 亚洲中文字幕久久精品无码A| 思思re热免费精品视频66 | 国产一区二区三区免费观看在线 | 青青草原精品国产亚洲av| 久久久久久国产精品免费免费男同| 亚洲视频在线一区二区| 在线亚洲午夜片AV大片| 亚洲网站免费观看| 亚洲欧洲国产精品久久| 99久久免费国产精品特黄| 久久久青草青青国产亚洲免观| 一本久久免费视频| 亚洲自偷自偷偷色无码中文| 免费无码作爱视频| 337p日本欧洲亚洲大胆精品555588| 国产免费AV片无码永久免费| 中中文字幕亚洲无线码| 女人18特级一级毛片免费视频| 亚洲av日韩av永久无码电影| 四虎免费久久影院| 丝袜捆绑调教视频免费区| 亚洲产国偷V产偷V自拍色戒| 中文字幕免费高清视频| 亚洲情A成黄在线观看动漫软件| 国产精品免费视频一区| 国产高潮流白浆喷水免费A片 | 亚洲精品福利视频| 色妞WWW精品免费视频|