<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)計

    其他鏈接

    友情鏈接

    最新評論

    初學(xué)Ivy(1)-安裝配置


        maven很強大,但是遠(yuǎn)不完美,令人煩惱的地方也不少。看到Ivy似乎日漸成熟,試試看這個小東西表現(xiàn)如何,畢竟后面有那個強大的我喜歡的ant。

        折騰了一番,整理出來點東西,分享給對ivy同樣感興趣的朋友。依然是"初學(xué)"系列,提供給新手入門使用。

    一. 下載安裝

        從官網(wǎng)http://ant.apache.org/ivy/下載到最新的ivy2.0.0正式版,選擇的是with dependencies的包。

        在安裝ivy之前,請先安裝好ant1.6以上版本,因為Ivy是基于ant的。

        參照官網(wǎng)的安裝,將下載下來的ivy安裝包解壓,然后復(fù)制ivy的jar文件到ant的lib目錄下(ANT_HOME/lib)。設(shè)置系統(tǒng)屬性IVY_HOME到ivy的安裝目錄,比如G:\soft\ivy\ivy200。

        另外一個簡單的安裝方法,就是直接到ivy的src/example/hello-ivy 目錄下執(zhí)行ant,會從網(wǎng)上下載ivy并安裝的。

    二. 設(shè)置工作目錄

        Ivy 使用"ivy.default.ivy.user.dir"作為工作目錄,ivy通過以下方式確認(rèn)該目錄的具體路徑:

        1. 查找變量ivy.default.ivy.user.dir
        2. 如果沒有找到,查找變量ivy.home
        3. 如果還沒有找到,查找變量user.home,然后使用user.home/.ivy目錄

        默認(rèn)安裝而沒有專門設(shè)置前,前兩個變量不存在,因此ivy就會使用user.home作為默認(rèn)工作目錄.

        Ivy 使用cache目錄來存放緩存文件,ivy通過以下方式確認(rèn)該目錄的具體路徑:
        1. 查找變量ivy.cache.dir
        2. 如果沒有找到,使用ivy.default.ivy.user.dir/cache

        默認(rèn)安裝而沒有專門設(shè)置前,前ivy.cache.dir變量不存在,因此ivy就會使用ivy.default.ivy.user.dir/cache,由于ivy.default.ivy.user.dir在該情況下默認(rèn)使用user.home,因此最后的結(jié)果就是使用user.home/cache目錄.

        修改默認(rèn)工作路徑的方法,很明顯,設(shè)置上述的幾個變量值即可。比如需要將ivy.default.ivy.user.dir設(shè)置到一個特定的目錄而不是使用當(dāng)前操作系統(tǒng)的user.home路徑,對于ivy,可以通過設(shè)置ant屬性的方式。比如修改build.xml文件,增加以下內(nèi)容
        <property name="ivy.default.ivy.user.dir" value="G:\soft\ivy\userdir" />
        這樣就將工作路徑修改過去,cache目錄也隨之改變,避免重新安裝操作系統(tǒng)/安裝多操作系統(tǒng)等情況下對當(dāng)前操作系統(tǒng)和用戶的依賴。

        由于build.xml文件通常都是項目文件,需要提交到cvs、subversion等版本控制系統(tǒng)中,因此直接在里面寫路徑不大適合,一旦修改需要改動所有項目的build.xml,而且不同開發(fā)人員要求路徑相同,不大合理。考慮到ant是可以方便讀取系統(tǒng)環(huán)境變量的,因此可以用環(huán)境變量來定義具體的路徑,ant簡單使用該環(huán)境變量:
        設(shè)置環(huán)境變量env.ivy.default.ivy.user.dir=G:\soft\ivy\userdir
        build.xml中這樣引用:
        <property environment="env"/>
        <property name="ivy.default.ivy.user.dir" value="${env.ivy.default.ivy.user.dir}" />

        以上目錄使用規(guī)則可以直接看ivy的源代碼,很清晰,類org.apache.ivy.core.settings.IvySettings中IvySettings()的構(gòu)造函數(shù)很容易看出上面的規(guī)則。(慚愧,剛學(xué)ivy,對配置不熟悉,又找不到相關(guān)的配置說明文檔,只好蠻干了)


    三. 配置文件路徑
        ivy使用變量名ivy.settings.file來設(shè)置配置文件路徑,由于沒有找到相關(guān)的設(shè)置文檔,因此干脆打開源文件看代碼。
        在類org.apache.ivy.ant.IvyAntSettings中,函數(shù)defineDefaultSettingFile()中有相關(guān)的代碼:

        1. 查找變量名ivy.settings.file
        settingsFileName = variableContainer.getVariable("ivy.settings.file");

        2. 可能的路徑,依次是項目BaseDir(應(yīng)該是ant的build.xml文件中定義的BaseDir,通常是項目根路徑),當(dāng)前路徑,很奇怪居然不查找諸如ivy.default.ivy.user.dir的路徑,甚至連ivy.settings.dir都不去查找,莫名其妙
        File[] settingsLocations = new File[] {
                    new File(getProject().getBaseDir(), settingsFileName),
                    new File(getProject().getBaseDir(), "ivyconf.xml"),
                    new File(settingsFileName),
                    new File("ivyconf.xml")
            };

        3. 上面四個路徑依次查找
            for (int i = 0; i < settingsLocations.length; i++) {
                file = settingsLocations[i];
                verbose("searching settings file: trying " + file);
                if (file.exists()) {
                    break;
                }
            }

        4. 如果沒有找到,則取默認(rèn)設(shè)置
        if (!file.exists()) {
                    info("no settings file found, using default...");
                    file = null;
                    url = IvySettings.getDefaultSettingsURL();
            }
        默認(rèn)配置文件是ivy.jar包中的org.apache.ivy.core.settings.ivysettings.xml,如果不做任何相關(guān)配置,一般都使用這個默認(rèn)配置。

        了解ivy是怎么工作了,想配置就方便了。比如如果希望為當(dāng)前項目單獨設(shè)置,則可以:
        1. 在當(dāng)前項目BaseDir目錄下放置ivyconf.xml文件
            new File(getProject().getBaseDir(), "ivyconf.xml")
            這個是最簡單的方案了,奇怪的是這里的文件名是ivyconf.xml,很郁悶,我用ivysettings.xml測試了好久都不生效,原來根結(jié)在這個地方。風(fēng)格不統(tǒng)一,估計是新老版本兼容問題,幸虧可以看到源代碼。

        2. 或者同時設(shè)置ivy.settings.file為要求的文件名,將該文件放置在項目BaseDir目錄下
            new File(getProject().getBaseDir(), settingsFileName)
            比如設(shè)置ivy.settings.file=ivysettings.xml,這樣可以和jar包中的文件名保持一致。似乎用處不大?

        3. 為了讓所有項目統(tǒng)一使用相同配置,可以考慮直接將ivy.settings.file指向一個公共的配置文件
            比如設(shè)置ivy.settings.file為${env.ivy.default.ivy.user.dir}/ivysettings.xml
            這樣就不必每次都重復(fù)設(shè)置相同的內(nèi)容,比如ivy的public repository,默認(rèn)是使用maven2的官網(wǎng)倉庫,我們可以修改為使用maven的本地私庫,如nexus之類。

        build.xml中的設(shè)置:
        <property environment="env"/>
        <property name="ivy.default.ivy.user.dir" value="${env.ivy.default.ivy.user.dir}" />
        <property name="ivy.settings.file" value="${ivy.default.ivy.user.dir}/ivysettings.xml" />


    四. 和nexus集成

        我喜歡使用nexus來搭建maven2的私服,即使家里機器上的私服只有我一個人用......
        因此想讓ivy能連到我現(xiàn)有nexus私服,google了一下找到解決的方法,實驗成功,只需要修改兩個地方:

        1. ivysettings.xml
            將原有的
        <include url="${ivy.default.settings.dir}/ivysettings-public.xml"/>
            修改為
        <include url="./ivysettings-public.xml"/>

        2. 在ivysettings.xml相同目錄下放置ivysettings-public.xml文件
            實際從ivy.jar包中copy出對應(yīng)文件,然后修改
            <ibiblio name="public" m2compatible="true" root="http://192.168.0.30:8081/nexus/content/groups/public/"/>
            注意這里的name="public"不能改,否則會報錯。

            有關(guān)public, shared, private三個repository的資料,請參考官方文檔,說明的很細(xì)致
            http://ant.apache.org/ivy/history/latest-release/tutorial/defaultconf.html

    added in 2009-04-22:
            上面的內(nèi)容有點亂,三個星期后我在另一臺機器上安裝ivy時,對照本文看居然都沒有直接搞定,又浪費了點時間折騰......
            決定再啰嗦一點,下面是具體操作步驟,這次足夠簡單直接了:
    1) install ant1.6+
        set env ANT_HOME=G:\soft\ant
        set Path, add ANT_HOME/bin

    2) install ivy
        set env IVY_HOME=G:\soft\ivy\ivy200
        set env ivy.default.ivy.user.dir=G:\soft\ivy\userdir

    3) config ivy for all projects and users
        1. copy ivysettings.xml to userdir
        2. copy ivysettings-public.xml to userdir
        3. open ivysettings-public.xml, edit m2 URL

    4) add ivy setting to ant build.xml of project
        ......
        <property environment="env"/>
        <property name="ivy.default.ivy.user.dir" value="${env.ivy.default.ivy.user.dir}" />
        <property name="ivy.settings.file" value="${ivy.default.ivy.user.dir}/ivysettings.xml" />
        ......

    added in 2009-05-29:
        在linux上測試的時候,才發(fā)現(xiàn)一個問題,ivy.default.ivy.user.dir是不能作為linux下的環(huán)境變量名的!為了保持一致,只好修改為IvyDefaultUserDir。
        即:
        set env IvyDefaultUserDir=G:\soft\ivy\userdir
        ......
        <property environment="env"/>
        <property name="ivy.default.ivy.user.dir" value="${env.IvyDefaultUserDir}" />
        <property name="ivy.settings.file" value="${ivy.default.ivy.user.dir}/ivysettings.xml" />
        ......

    posted on 2009-03-31 00:01 sky ao 閱讀(8774) 評論(3)  編輯  收藏 所屬分類: project building

    評論

    # re: 初學(xué)Ivy(1)-安裝配置[未登錄] 2009-03-31 10:41 IceRao

    不錯的分享。

    第一次接觸maven很興奮。后來慢慢靜下心來還是覺得ivy+ant更加適合。  回復(fù)  更多評論   

    # re: 初學(xué)Ivy(1)-安裝配置 2009-03-31 11:44 sky ao

    maven也挺好的,但是對于大型項目,尤其是一些有一個接口然后多種實現(xiàn)的項目,比如有多種數(shù)據(jù)庫,多種cache方案,多種交互協(xié)議造成不同實現(xiàn)。這種復(fù)雜情況下依賴擴散的速度是非常驚人的,極難控制。

    maven在這種場景下很無力,我想看看ivy的表現(xiàn)如何。  回復(fù)  更多評論   

    # re: 初學(xué)Ivy(1)-安裝配置[未登錄] 2013-05-11 22:35 iliveido

    樓主講得很清晰,很詳細(xì),感謝分享!  回復(fù)  更多評論   

    主站蜘蛛池模板: 国产大片免费观看中文字幕| 亚洲综合国产一区二区三区| 在线观看免费污视频| 免费无遮挡无码永久在线观看视频| 国产又黄又爽又猛的免费视频播放 | 一二三四视频在线观看中文版免费| 亚洲综合免费视频| 免费国产高清视频| 亚洲欧洲日韩不卡| 一二三区免费视频| 一区二区免费视频| 亚洲国产成人va在线观看网址| 免费视频成人片在线观看| 最新亚洲卡一卡二卡三新区| JLZZJLZZ亚洲乱熟无码| 中文字幕免费观看| 男女猛烈无遮掩视频免费软件 | 亚洲国产中文在线视频| 国产色爽女小说免费看| 最近中文字幕大全免费版在线| 亚洲日本在线电影| 91在线精品亚洲一区二区| 免费人成在线观看网站品爱网日本| 久久国产免费一区二区三区| 亚洲Av永久无码精品黑人| 亚洲国产精品热久久| 亚洲精品视频免费| 免费av欧美国产在钱| 可以免费观看的毛片| 国产青草亚洲香蕉精品久久| 久久精品国产亚洲av水果派| 亚洲精品WWW久久久久久| 久九九精品免费视频| 国产精品网站在线观看免费传媒| 青青青亚洲精品国产| 在线综合亚洲中文精品| 亚洲国产精品无码一线岛国| mm1313亚洲国产精品美女| 最近免费中文字幕4| 永久黄色免费网站| 久久免费视频观看|