溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ivy的配置和使用是怎樣的

發布時間:2021-11-10 18:53:01 來源:億速云 閱讀:293 作者:柒染 欄目:大數據

本篇文章給大家分享的是有關ivy的配置和使用是怎樣的,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

maven很強大,但也有令人煩惱的地方??吹絀vy似乎日漸成熟,試試看這個小東西表現如何,畢竟后面有那個強大的ant

一. 下載安裝

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

    在安裝ivy之前,請先安裝好ant,因為Ivy是基于ant的;需要根據ivy的版本選擇ant的版本。

下載地址:http://mirrors.tuna.tsinghua.edu.cn/apache//ant/ivy/2.4.0/apache-ivy-2.4.0-bin-with-deps.tar.gz

    參照官網的安裝,將下載下來的ivy安裝包解壓,然后復制ivy的jar文件到ant的lib目錄下(ANT_HOME/lib)。設置系統屬性IVY_HOME到ivy的安裝目錄,比如D:\ivy2.4.0。

二. 設置工作目錄

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

    1. 查找變量ivy.default.ivy.user.dir

    2. 如果沒有找到,查找變量ivy.home

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

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

    Ivy 使用cache目錄來存放緩存文件,ivy通過以下方式確認該目錄的具體路徑:

    1. 查找變量ivy.cache.dir

    2. 如果沒有找到,使用ivy.default.ivy.user.dir/cache 默認安裝而沒有專門設置前,前ivy.cache.dir變量不存在,因此ivy就會使用ivy.default.ivy.user.dir/cache,由于ivy.default.ivy.user.dir在該情況下默認使用user.home,因此最后的結果就是使用user.home/cache目錄。

修改默認工作路徑的方法,很明顯,設置上述的幾個變量值即可。比如需要將ivy.default.ivy.user.dir設置到一個特定的目錄而不是使用當前操作系統的user.home路徑,對于ivy,可以通過設置ant屬性的方式。比如修改build.xml文件,增加以下內容

    <property name="ivy.default.ivy.user.dir" value="D:\ivy\userdir" /> 這樣就將工作路徑修改過去,cache目錄也隨之改變,避免重新安裝操作系統/安裝多操作系統等情況下對當前操作系統和用戶的依賴。

由于build.xml文件通常都是項目文件,需要提交到svn,git等版本控制系統中,因此直接在里面寫路徑不大適合,一旦修改需要改動所有項目的build.xml,而且不同開發人員要求路徑相同,不大合理??紤]到ant是可以方便讀取系統環境變量的,因此可以用環境變量來定義具體的路徑,ant簡單使用該環境變量:

    設置環境變量env.ivy.default.ivy.user.dir=D:\ivy\userdir

    build.xml中這樣引用:

    <property environment="env"/>

    <property name="ivy.default.ivy.user.dir" value="${env.ivy.default.ivy.user.dir}" /> 以上目錄使用規則可以直接看ivy的源代碼,很清晰,類org.apache.ivy.core.settings.IvySettings中IvySettings()的構造函數很容易看出上面的規則。

三. 配置文件路徑     ivy使用變量名ivy.settings.file來設置配置文件路徑,由于沒有找到相關的設置文檔,因此干脆打開源文件看代碼。

    在類org.apache.ivy.ant.IvyAntSettings中,函數defineDefaultSettingFile()中有相關的代碼:

    1. 查找變量名ivy.settings.file

    settingsFileName = variableContainer.getVariable("ivy.settings.file");

    2.可能的路徑,依次是項目BaseDir(應該是ant的build.xml文件中定義的BaseDir,通常是項目根路徑),當前路徑,很奇怪居然不查找諸如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. 如果沒有找到,則取默認設置

    if (!file.exists()) {

                info("no settings file found, using default...");

                file = null;

                url = IvySettings.getDefaultSettingsURL();

        }

    默認配置文件是ivy.jar包中的org.apache.ivy.core.settings.ivysettings.xml,如果不做任何相關配置,一般都使用這個默認配置。

    了解ivy是怎么工作了,想配置就方便了。比如如果希望為當前項目單獨設置,則可以:

    1. 在當前項目BaseDir目錄下放置ivyconf.xml文件

        new File(getProject().getBaseDir(), "ivyconf.xml")

        這個是最簡單的方案了,奇怪的是這里的文件名是ivyconf.xml,很郁悶,我用ivysettings.xml測試了好久都不生效,原來根結在這個地方。風格不統一,估計是新老版本兼容問題,幸虧可以看到源代碼。

    2. 或者同時設置ivy.settings.file為要求的文件名,將該文件放置在項目BaseDir目錄下

        new File(getProject().getBaseDir(), settingsFileName)

        比如設置ivy.settings.file=ivysettings.xml,這樣可以和jar包中的文件名保持一致。似乎用處不大?

    3. 為了讓所有項目統一使用相同配置,可以考慮直接將ivy.settings.file指向一個公共的配置文件

        比如設置ivy.settings.file為${env.ivy.default.ivy.user.dir}/ivysettings.xml

        這樣就不必每次都重復設置相同的內容,比如ivy的public repository,默認是使用maven2的官網倉庫,我們可以修改為使用maven的本地私庫,如nexus之類。

    build.xml中的設置:

    <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集成

    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出對應文件,然后修改

        <ibiblio name="public" m2compatible="true" root="http://192.168.0.30:8081/nexus/content/groups/public/"/>

        注意這里的name="public"不能改,否則會報錯。

        有關public, shared, private三個repository的資料,請參考官方文檔,說明的很細致

        http://ant.apache.org/ivy/history/latest-release/tutorial/defaultconf.html

總結:

1) install ant1.6+

    set env ANT_HOME=D:\ant

    set Path, add ANT_HOME/bin

2) install ivy

    set env IVY_HOME=D:\ivy\ivy200

    set env ivy.default.ivy.user.dir=D:\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" />

ivy.default.ivy.user.dir是不能作為linux下的環境變量名的!只好修改為IvyDefaultUserDir。

    即:

    set env IvyDefaultUserDir=D:\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" />

以上就是ivy的配置和使用是怎樣的,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

ivy
AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女