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

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

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

    Sky's blog

    我和我追逐的夢

    常用鏈接

    統(tǒng)計(jì)

    其他鏈接

    友情鏈接

    最新評論

    ivy教程(2)-快速開始


        在這個(gè)例子中,我們將看到使用ivy的一個(gè)最簡單的方式。不使用任何特殊設(shè)置,ivy將使用maven2 倉庫來解析你在ivy文件中聲明的依賴。讓我們來看一眼涉及到的文件的內(nèi)容。

        你將在ivy發(fā)行包的src/example/hello-ivy 目錄下找到這個(gè)教程的源文件。

    1) ivy.xml 文件
        這個(gè)文件用于描述項(xiàng)目對其他類庫的依賴。
        這里是例子

    <ivy-module version="2.0">
        
    <info organisation="apache" module="hello-ivy"/>
        
    <dependencies>
            
    <dependency org="commons-lang" name="commons-lang" rev="2.0"/>
            
    <dependency org="commons-cli" name="commons-cli" rev="1.0"/>
        
    </dependencies>
    </ivy-module>

        這個(gè)文件的格式非常容易理解,但是讓我們給出一些關(guān)于這里聲明的東西的細(xì)節(jié)。首先,根元素ivy-module,version屬性用于告訴ivy這個(gè)文件使用的ivy的版本。

        然后是info標(biāo)簽,用于給出和這個(gè)我們正在定義依賴的模塊有關(guān)的信息。這里只定義了組織和模塊名,你可以自由選擇任何你想要的組織和模塊名,但是我們建議不要帶空格。

        最后,dependencies 部分讓你定義依賴。這里這個(gè)模塊依賴兩個(gè)類庫:commons-lang 和 commons-cli。如你所看到的,我們使用org和name屬性來定義我們需要的依賴的組織和模塊名。rev屬性用于明確說明你依賴的模塊的修訂版本。

        為了知道如何填寫這些屬性,你需要知道你依賴的類庫的準(zhǔn)確信息。ivy默認(rèn)使用maven2 倉庫。我們推薦你使用mvnrepository.com 來查找你需要的模塊。一旦你找到它,你將得到如何在一個(gè)maven POM中聲明依賴的細(xì)節(jié)。例如:

    <dependency>
        
    <groupId>commons-lang</groupId>
        
    <artifactId>commons-lang</artifactId>
        
    <version>2.0</version>
    </dependency>

        為了將這些信息轉(zhuǎn)換為ivy依賴聲明,你所需要做的只是使用groupId 作為組織,artifactId作為模塊名。這是我們在這個(gè)教程中為依賴做的,commons-lang 和 commons-cli。注意使用commons-lang 和 commons-cli 作為組織不是組織應(yīng)該是什么的最好的例子。更好的方式是使用org.apache, org.apache.commons 或 org.apache.commons.lang. 然而,這是在maven2倉庫中如何標(biāo)識這些模塊的方法,因此獲得他們的最簡單的方式是照原來的樣子使用細(xì)節(jié)(你將會看到在構(gòu)建一個(gè)倉庫時(shí),你可以使用命名空間來重新定義這些名稱,如果你想讓某些東西更加清晰)。

        如果你想得到在ivy文件中可以做什么的更多細(xì)節(jié),你可以看一下ivy文件的參考文檔。

    2) build.xml 文件

        對應(yīng)的build文件包含一個(gè)target集合,容許解析在ivy文件中聲明的依賴,編譯并運(yùn)行示例代碼,生成依賴解析報(bào)告,并清理項(xiàng)目的緩存。

        你可以使用標(biāo)準(zhǔn)的"ant -p" 來獲取可用的target列表。可以隨意看一下整個(gè)文件,這里是和依賴解析有關(guān)的部分:

    <project xmlns:ivy="antlib:org.apache.ivy.ant" name="hello-ivy" default="run">
       
        
       
        
    <!-- =================================
              target: resolve             
             ================================= 
    -->
        
    <target name="resolve" description="--> retrieve dependencies with ivy">
            
    <ivy:retrieve />
        
    </target>
    </project>

        如你所見,調(diào)用ivy來解析和獲取依賴是非常簡單的:如果ivy安裝正確,你所需要做的只是在你的ant文件中定義一個(gè)xml的命名空間(xmlns:ivy="antlib:org.apache.ivy.ant")。然后在這里命名空間中所有的ivy ant 任務(wù)都可用。

        這里我們只使用了一個(gè)任務(wù):retrieve 任務(wù)。沒有任何屬性,它將使用默認(rèn)設(shè)置并查找名為ivy.xml的文件來獲取依賴定義。這正是我們想要的,因此我們不需要做其他。

        注意,在這案例中我們定義了一個(gè)"resolve" target 并調(diào)用了retrieve 任務(wù)。這聽起來有點(diǎn)令人困惑,實(shí)際上retrieve任務(wù)會執(zhí)行一次resolve(解析依賴并下載他們到本地緩存),然后再執(zhí)行一次retrieve。查看How does it work ? 頁面來得到關(guān)于這個(gè)的更多細(xì)節(jié)。

    3) 運(yùn)行項(xiàng)目

        好,現(xiàn)在我們看到文件已經(jīng)解析好了,讓我們運(yùn)行這個(gè)實(shí)例來看會發(fā)生什么。打開一個(gè)shell(或者命令行)窗口,并進(jìn)入hello-ivy 實(shí)例目錄。然后,在命令提示符下,運(yùn)行"ant":

    I:\hello-ivy>ant
    Buildfile: src\example\hello-ivy\build.xml

    resolve:
    [ivy:retrieve] :: Ivy 2.0.0-beta1-local-20071104204849 - 20071104204849 :: http://ant.apache.org/ivy/ ::
    [ivy:retrieve] No ivy:settings found for the default reference 'ivy.instance'.  A default instance will be used
    [ivy:retrieve] no settings file found, using default
    ....
    [ivy:retrieve] :: loading settings :: url = jar:file:/c:/dev/data/opensource_workspace/ivy/build/artifact/ivy-core.jar!/org/apache/ivy/core/settings/ivysettings.xml
    [ivy:retrieve] :: resolving dependencies :: [ org.apache | hello-ivy | working@BEN-ScokartG ]
    [ivy:retrieve]     confs: [default]
    [ivy:retrieve]     found [ commons-lang | commons-lang | 2.0 ] in public
    [ivy:retrieve]     found [ commons-cli | commons-cli | 1.0 ] in public
    [ivy:retrieve]     found [ commons-logging | commons-logging | 1.0 ] in public
    [ivy:retrieve] downloading http://repo1.maven.org/maven2/commons-lang/commons-lang/2.0/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] (3335ms)
    [ivy:retrieve] downloading http://repo1.maven.org/maven2/commons-cli/commons-cli/1.0/commons-cli-1.0.jar
    ....
    [ivy:retrieve] .................................... (29kB)
    [ivy:retrieve] .. (0kB)
    [ivy:retrieve]     [SUCCESSFUL ] [ commons-cli | commons-cli | 1.0 ]/commons-cli.jar[jar] (2053ms)
    [ivy:retrieve] downloading http://repo1.maven.org/maven2/commons-logging/commons-logging/1.0/commons-logging-1.0.jar ....
    [ivy:retrieve] .......... (21kB)
    [ivy:retrieve] .. (0kB)
    [ivy:retrieve]     [SUCCESSFUL ] [ commons-logging | commons-logging | 1.0 ]/commons-logging.jar[jar] (1933ms)
    [ivy:retrieve] :: resolution report ::
    [ivy:retrieve]     :: evicted modules:
    [ivy:retrieve]     [ commons-lang | commons-lang | 1.0 ] by [[ commons-lang | commons-lang | 2.0 ]] in [default]
        ---------------------------------------------------------------------
        |                  |            modules            ||   artifacts   |
        |       conf       | number| search|dwnlded|evicted|| number|dwnlded|
        ---------------------------------------------------------------------
        |      default     |   4   |   3   |   0   |   1   ||   3   |   3   |
        ---------------------------------------------------------------------
    [ivy:retrieve] :: retrieving :: [ org.apache | hello-ivy ]
    [ivy:retrieve]     confs: [default]
    [ivy:retrieve]     3 artifacts copied, 0 already retrieved

    run:
         [java] standard message : hello ivy !
         [java] capitalized by org.apache.commons.lang.WordUtils : Hello Ivy !

    BUILD SUCCESSFUL
    Total time: 14 seconds

    4) 發(fā)生了什么?
       
        在沒有任何設(shè)置的情況下,ivy從maven2 倉庫中獲取文件。這就是這里發(fā)生的事情。
        resolve任務(wù)在maven2 倉庫中發(fā)現(xiàn)commons-lang 和 commons-cli 模塊,識別commons-cli 依賴于commons-logging并作為間接依賴解析它。然后ivy下載所有對應(yīng)的制品到它的緩存中(默認(rèn)在你的user home下的.ivy2/cache 目錄)。

    最后,retrieve任務(wù)將這些解析好的jar包從ivy緩存復(fù)制到項(xiàng)目默認(rèn)的lib目錄(你可以簡單地通過設(shè)置retrieve任務(wù)的pattern屬性來改變).

        你可能會發(fā)現(xiàn)這個(gè)任務(wù)僅僅為輸出一個(gè)"Hello Ivy !"信息就花費(fèi)了很長的時(shí)間。但是記住大量的時(shí)間用在從網(wǎng)絡(luò)下載需要的文件。讓我們再次運(yùn)行它:

    I:\hello-ivy>ant
    Buildfile: src\example\hello-ivy\build.xml

    resolve:
    [ivy:retrieve] :: Ivy 2.0.0-beta1-local-20071104204849 - 20071104204849 :: http://ant.apache.org/ivy/ ::
    [ivy:retrieve] No ivy:settings found for the default reference 'ivy.instance'.  A default instance will be used
    [ivy:retrieve] no settings file found, using default...
    [ivy:retrieve] :: loading settings :: url = jar:file:/c:/dev/data/opensource_workspace/ivy/build/artifact/ivy-core.jar!/org/apache/ivy/core/settings/ivysettings.xml
    [ivy:retrieve] :: resolving dependencies :: [ org.apache | hello-ivy | working@BEN-ScokartG ]
    [ivy:retrieve]     confs: [default]
    [ivy:retrieve]     found [ commons-lang | commons-lang | 2.0 ] in public
    [ivy:retrieve]     found [ commons-cli | commons-cli | 1.0 ] in public
    [ivy:retrieve]     found [ commons-logging | commons-logging | 1.0 ] in public
    [ivy:retrieve] :: resolution report ::
    [ivy:retrieve]     :: evicted modules:
    [ivy:retrieve]     [ commons-lang | commons-lang | 1.0 ] by [[ commons-lang | commons-lang | 2.0 ]] in [default]
        ---------------------------------------------------------------------
        |                  |            modules            ||   artifacts   |
        |       conf       | number| search|dwnlded|evicted|| number|dwnlded|
        ---------------------------------------------------------------------
        |      default     |   4   |   0   |   0   |   1   ||   3   |   0   |
        ---------------------------------------------------------------------
    [ivy:retrieve] :: retrieving :: [ org.apache | hello-ivy ]
    [ivy:retrieve]     confs: [default]
    [ivy:retrieve]     0 artifacts copied, 3 already retrieved

    run:
         [java] standard message : hello ivy !
         [java] capitalized by org.apache.commons.lang.WordUtils : Hello Ivy !

    BUILD SUCCESSFUL
    Total time: 3 seconds

        太好了!緩存被使用,不再需要下載,構(gòu)建只在瞬間。

        現(xiàn)在,如果你想生成一個(gè)泥的模塊的所有依賴的詳細(xì)報(bào)告,你可以調(diào)用report target,并查看在build目錄中的生成文件。你將得到一些類似這樣的東西。

        如你所見,使用ivy來解析存儲在maven2 倉庫中的依賴是非常容易的。現(xiàn)在你可以繼續(xù)下一個(gè)教程來學(xué)習(xí)更多的關(guān)于如何使用模塊配置的內(nèi)容,這是一個(gè)非常強(qiáng)大的ivy特殊特性。其他教程也可用,你將學(xué)習(xí)到如何使用ivy設(shè)置來建造一個(gè)可能非常復(fù)雜的企業(yè)倉庫。現(xiàn)在也是開始閱讀參考文檔的好時(shí)機(jī),尤其是介紹題材可以很好的給出ivy概況。對于開始考慮如何使用ant + ivy來構(gòu)建一個(gè)干凈而健壯的構(gòu)建系統(tǒng)來說,最佳實(shí)踐頁面是必須閱讀的。


    posted on 2009-09-22 11:48 sky ao 閱讀(5150) 評論(3)  編輯  收藏 所屬分類: project building

    評論

    # re: ivy教程(2)-快速開始[未登錄] 2013-05-22 13:51 AAAAA

    打倒中-國-共-產(chǎn)-黨  回復(fù)  更多評論   

    # re: ivy教程(2)-快速開始[未登錄] 2013-05-22 13:52 AAAAA

    江-澤-民是個(gè)壞蛋  回復(fù)  更多評論   

    # re: ivy教程(2)-快速開始[未登錄] 2013-05-22 13:52 AAAAA

    李克強(qiáng)是個(gè)依法犯  回復(fù)  更多評論   

    主站蜘蛛池模板: 免费看美女让人桶尿口| 最近2019中文字幕免费看最新| 久久免费公开视频| 国产大片免费网站不卡美女| 成全视频免费高清| 亚洲国产一成久久精品国产成人综合 | 亚洲日本中文字幕天堂网| 亚洲精品无码不卡在线播放HE| 亚洲图片在线观看| 亚洲欧美国产国产综合一区| 一级视频免费观看| 4虎1515hh永久免费| 免费的一级黄色片| 亚洲精品乱码久久久久久久久久久久 | 亚洲区小说区图片区| 亚洲AV无码专区电影在线观看| 亚洲一区二区影视| 免费无码专区毛片高潮喷水| 久久国产精品免费视频| 四虎影院免费在线播放| 亚洲无线码在线一区观看| 亚洲一级片在线观看| 一个人看的www视频免费在线观看 一个人看的免费观看日本视频www | 亚洲七七久久精品中文国产| 亚洲最大黄色网址| 无套内射无矿码免费看黄| 中文字幕免费视频| 亚洲成AⅤ人影院在线观看| 亚洲黄色在线播放| 免费人成大片在线观看播放电影| 99热在线观看免费| 又黄又爽的视频免费看| 亚洲日韩乱码久久久久久| 国产高潮久久免费观看| 亚洲中文无码永久免费| 亚洲国产成人片在线观看| 蜜臀亚洲AV无码精品国产午夜.| 亚洲免费在线视频| 亚洲人成人网站在线观看| 亚洲国产成人99精品激情在线| 三级黄色免费观看|