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

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

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

    Sky's blog

    我和我追逐的夢

    常用鏈接

    統計

    其他鏈接

    友情鏈接

    最新評論

    ivy教程(5)-雙重解析器

        在一些情況下,會發生這樣的事情:你的模塊描述符(ivy文件,maven pom, ...)被放置在一個地方,而模塊的制品(jars,...)在另外一個地方。

        雙重解析器用于滿足這種類型的需求,而這個教程將展示如何使用它。

        1) 項目描述

        讓我們看一下你的ivy發行包里面的src/example/dual目錄.
        它包含一個構建文件和3個目錄:

        * settings: b包含ivy設置文件
        * repository: ivy文件的示例倉庫
        * project: 利用ivy雙重解析器的項目

        1. dual項目
        項目非常簡單,只包含一個簡單的類: example.Hello
        它依賴兩個類庫: Apache commons-lang 和 Apache commons-httpclient.
        這里是項目的內容:

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

        讓我們看一下ivy.xml文件:
    <ivy-module version="1.0">
        
    <info organisation="org.apache" module="hello-ivy"/>
        
    <dependencies>
            
    <dependency org="commons-httpclient" name="commons-httpclient" rev="2.0.2"/>
            
    <dependency org="commons-lang" name="commons-lang" rev="2.0"/>
        
    </dependencies>
    </ivy-module>

        如你所見,這里沒有任何特殊的東西...實際上,這就是ivy的原理: 保持ivy文件獨立于依賴解析的方式。

        2. ivy設置

        ivy設置在settings目錄中;它只包含一個文件: ivysettings.xml.
    <ivysettings>
      
    <settings defaultResolver="dual-example"/>
      
    <resolvers>
        
    <dual name="dual-example">
          
    <filesystem name="ivys">
            
    <ivy pattern="${ivy.settings.dir}/../repository/[module]-ivy-[revision].xml" />
          
    </filesystem>
          
    <ibiblio name="ibiblio" m2compatible="true" usepoms="false" />
        
    </dual>
      
    </resolvers>
    </ivysettings>

        這里我們配置了一個解析器,默認的,它是一個雙重解析器。這個雙重解析器有兩個子解析器:第一個被稱為是雙重解析器的"ivy"或"metadata"解析器,而第二個被稱為"artifact" 解析器。重要的是雙重解析器必須嚴格的擁有兩個遵循這個給定順序的解析器。

        metadata解析器,這里是一個文件解析器,僅僅用于查找模塊的描述符,在這個案例中是ivy文件。這個解析器給出的設置闡述說所有ivy文件都在同一個目錄中,命名形如[module]-ivy-[revision].xml.如果我們檢查倉庫目錄,我們可以確認它包含一個名為commons-httpclient-ivy-2.0.2.xml的文件。它滿足給定的模式并將因此被這個解析器找到。

        artifact解析器就是一個ibiblio 解析器,配置為m2compatible 模式以便使用maven2倉庫,屬性 usepoms="false" 確保它不會使用maven2 metadata。注意,這并不是嚴格要求,因為在雙重解析器中的第二個解析器(artifact解析器)本來就不會被要求查找模塊metadata。

        2) walkthrough

        step 1 : 準備
        打開一個dos或者shell窗口,并進去"dual"目錄

        step 2 : 清理
        在提示符下: ant

        這將清理整個項目目錄樹(已編譯的類和獲得的libs)和ivy緩存。
        你可以再每次你想清理這個例子時做這個事情。

        step 3 : 運行項目
        進入projuect目錄,并簡單運行ant

    I:\dual\project>ant
    Buildfile: src\example\dual\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\dual\config\ivysettings.xml
    [ivy:retrieve] :: resolving dependencies :: [ org.apache | hello-ivy | working@BEN-ScokartG ]
    [ivy:retrieve]     confs: [default]
    [ivy:retrieve]     found [ commons-httpclient | commons-httpclient | 2.0.2 ] in ivys
    [ivy:retrieve]     found [ commons-httpclient | commons-logging | 1.0.4 ] in ibiblio
    [ivy:retrieve]     found [ commons-lang | commons-lang | 2.0 ] in ibiblio
    [ivy:retrieve] downloading http://www.ibiblio.org/maven/commons-httpclient/jars/commons-httpclient-2.0.2.jar
    ...
    [ivy:retrieve] ........................................................
    [ivy:retrieve]
    ........................................................
    [ivy:retrieve]
    ............ (220kB)
    [ivy:retrieve] .. (0kB)
    [ivy:retrieve]     [SUCCESSFUL ] [ commons-httpclient | commons-httpclient | 2.0.2 ]/commons-httpclient.jar[jar] (11676ms)
    [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] (7651ms)
    [ivy:retrieve] downloading http://www.ibiblio.org/maven/commons-logging/jars/commons-logging-1.0.4.jar ...
    [ivy:retrieve]
    ............................ (37kB)
    [ivy:retrieve] .. (0kB)
    [ivy:retrieve]     [SUCCESSFUL ] [ commons-httpclient | commons-logging | 1.0.4 ]/commons-logging.jar[jar] (9724ms)
    [ivy:retrieve] :: resolution report ::
        ---------------------------------------------------------------------
        |                  |            modules            ||   artifacts   |
        |       conf       | number| search|dwnlded|evicted|| number|dwnlded|
        ---------------------------------------------------------------------
        |      default     |   3   |   3   |   0   |   0   ||   3   |   3   |
        ---------------------------------------------------------------------
    [ivy:retrieve] :: retrieving :: [ org.apache | hello-ivy ]
    [ivy:retrieve]     confs: [default]
    [ivy:retrieve]     3 artifacts copied, 0 already retrieved

    run:
        [mkdir] Created dir: C:\dev\data\opensource_workspace\ivy\src\example\dual\project\build
        [javac] Compiling 1 source file to C:\dev\data\opensource_workspace\ivy\src\example\dual\project\build
         [java] standard message : hello ivy !
         [java] capitalized by org.apache.commons.lang.WordUtils : Hello Ivy !
         [java] head status code with httpclient: 200
         [java] now check if httpclient dependency on commons-logging has been realized
         [java] found logging class in classpath: interface org.apache.commons.logging.Log

    BUILD SUCCESSFUL
    Total time: 37 seconds

        你可以看到,ivy不僅僅下載commons-lang 和commons-httpclient,而且還有commons-logging.實際上,commons-logging是httpclient的依賴,我們可以看到在倉庫目錄中找到的httpclient 的ivy文件.

    <ivy-module version="1.0">
        
    <info
            
    organisation="commons-httpclient"
            module
    ="commons-httpclient"
            revision
    ="2.0.2"
            status
    ="release"
            publication
    ="20041010174300"/>
        
    <dependencies>
            
    <dependency org="commons-logging" name="commons-logging" rev="1.0.4" conf="default"/>
        
    </dependencies>
    </ivy-module>

        想這樣每個東西都工作的很好,ivy文件在倉庫目錄下被找到而制品從ibiblio下載。

        這種類型的配置在你不想依賴maven2倉庫的metadata或者你想為一些或者全部模塊完全利用ivy文件時有用。

        有關雙重解析器的完整的解析,請查閱對應的參考文檔。


    posted on 2009-09-27 20:58 sky ao 閱讀(1781) 評論(0)  編輯  收藏 所屬分類: project building

    主站蜘蛛池模板: 久久亚洲精品国产精品婷婷| 亚洲AV一区二区三区四区| 久久国产高潮流白浆免费观看| 亚洲视频在线免费看| 好大好硬好爽免费视频| 四虎成人精品国产永久免费无码| 亚洲香蕉成人AV网站在线观看| 18女人毛片水真多免费| 美女羞羞免费视频网站| 亚洲国产精品久久久久网站 | 久久久久久久免费视频| 亚洲乱亚洲乱妇24p| 亚洲一区二区三区免费| 足恋玩丝袜脚视频免费网站| 亚洲成熟丰满熟妇高潮XXXXX| 国产亚洲精品岁国产微拍精品 | 亚洲中文字幕日产乱码高清app| 8x8x华人永久免费视频| 羞羞视频网站免费入口| 久久亚洲高清观看| 欧美大尺寸SUV免费| 91免费福利视频| 亚洲熟妇AV乱码在线观看| 亚洲韩国精品无码一区二区三区| 毛片大全免费观看| 免费无码成人AV在线播放不卡| 337P日本欧洲亚洲大胆精品| 久久久久亚洲AV无码观看| 久久亚洲色一区二区三区| 18pao国产成视频永久免费| 未满十八私人高清免费影院| 亚洲va在线va天堂成人| 亚洲av永久无码精品国产精品| 免费看AV毛片一区二区三区| 最近免费中文字幕大全免费| 中文字幕在线视频免费观看| 亚洲国产欧洲综合997久久| 亚洲国产成人综合| 亚洲开心婷婷中文字幕| 成年男女男精品免费视频网站 | 国产AV无码专区亚洲AV漫画|