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

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

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

    posts - 56, comments - 77, trackbacks - 0, articles - 1
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    Ivy: 搭建本地倉庫

    Posted on 2007-12-23 23:22 切爾斯基 閱讀(5949) 評論(0)  編輯  收藏

    基本上, 搭建一個本地的ivy倉庫, 包含兩件獨立的事情: 搭建倉庫本身, 和配置如何使用這個倉庫

    倉庫本身

    Ivy的Repository是由一個個Module組成的, Module則包含自身的artifacts(通常是jar文件)和描述文件.

    Module的描述文件是ivy的核心, 里面記錄了這個module包含哪些artifacts和這個module對其它module的依賴. 這樣就能順藤摸瓜, 牽出所有的依賴來

    <ivy-module version="1.0">

    <info organisation="your.company" module="your.project" />

    <configurations>

    <conf name="release" />

    <conf name="testing" extends="release" />

    </configurations>

    <publications>

    <artifact name="common" />

    <artifact name="client" />

    <artifact name="server" />

    </publications>

    <dependencies defaultconf="release->default">

    <dependency name="ant" rev="1.7.0" />

    <dependency name="antlr" rev="2.7.6" />

    <dependency name="xstream" rev="1.2.2" />

    </dependencies>

    </ivy-module>

    倉庫在文件系統(tǒng)上的結(jié)構(gòu), 可以由你自己決定, 只要在使用這個倉庫時, 把它的布局信息用配置文件描述出來告訴使用者就可以了

    如何使用這個倉庫

    基本上, 我們借助 Ant 來使用ivy, 那么我們需要告訴 Ant 一些repository相關(guān)的信息 : Where is the local repository, and How it looks like

    <property name="ivy.local.default.root" location="/your/local/ivy/repository/folder" />

    <ivy:settings id="ivy.instance" file="${ivy.local.default.root}/ivy.repository.settings.xml" />

    那個ivy.repository.settings.xml就是來描述repository的布局的:

    <ivysettings>

    <settings defaultResolver="local" />

    <resolvers>

    <filesystem name="local" checkmodified="true">

    <artifact pattern="${ivy.local.default.root}/[module]/[artifact].jar" />

    <artifact pattern="${ivy.local.default.root}/[module]/[artifact]-[revision].jar" />

    <ivy pattern="${ivy.local.default.root}/[module]/[module]-dependencies.xml" />

    </filesystem>

    </resolvers>

    </ivysettings>

    然后你告訴 Ant 你的項目的依賴和artifacts, Ant就可以幫你獲得依賴和發(fā)布artifacts了

    <property name="ivy.dep.file" location="${basedir}/my-module-dependencies.xml" />

    <ivy:retrieve />

    <!-- retrieve dependencies first, then compile, package, ... then publish-->

    <ivy:publish resolver="local" pubrevision="1.0" overwrite="true" forcedeliver="true">

    <artifacts pattern="${build.dir}/dist/[artifact].[ext]" />

    <artifacts pattern="${basedir}/my-module-dependencies.xml" />

    </ivy:publish>

    那個my-module-dependencies.xml就是你的項目的依賴描述符, 事實上ivy也將它看作一個module,和repository里的module一視同仁. 參考最開始的例子.

    Ivy 如何解決我們的問題

    Q: 我的項目在開發(fā)環(huán)境和產(chǎn)品環(huán)境有不同的依賴, 怎么辦?

    A: Ivy 提供了"configuration" 的概念. 在那個my-module-dependencies.xml中, 你可以為你的module定義development和product兩種配置, 可以指定每個artifact隸屬于哪個配置, 指定每個dependency屬于哪個配置. 注意這是一個遞歸定義, 因為你依賴的module也有可能定義了多個配置, 你需要指定你依賴于依賴的哪個配置,所以這是一個映射. 比如你的產(chǎn)品在運行環(huán)境中依賴于spring的產(chǎn)品環(huán)境:

    <ivy-module version="1.0">

    <info organisation="your.company" module="your.project" />

    <configurations>

    <conf name="product" />

    <conf name="development" />

    </configurations>

    <dependencies defaultconf="product->default">

    <dependency name="spring" rev="1.7.0" conf="release->product" />

    <dependency name="antlr" rev="2.7.6" conf="development->debug" />

    <dependency name="junit" rev="4.4" conf="development->release" />

    </dependencies>

    </ivy-module>

    ivy 的各個Ant task允許你指定在哪個 configuration 上操作; 如為product配置取得所有依賴:

        <ivy:retrieve conf="product" />

    Q: 我的項目在開發(fā)環(huán)境和產(chǎn)品環(huán)境有太多相同的依賴, 事實上開發(fā)環(huán)境包含產(chǎn)品環(huán)境所有的依賴, 額外再加上junit,jmock等; 如何消除重復的依賴描述呢?

    A: Ivy 提供了配置之間 "extends" , 也就是"繼承"的概念, 你可以讓開發(fā)環(huán)境的配置繼承自產(chǎn)品環(huán)境的配置, 這樣就可以復用產(chǎn)品環(huán)境的配置

    <configurations>

    <conf name="product" />

    <conf name="development" extends="product" />

    </configurations>

    Q: 缺省ivy總是從緩存中讀取配置, 這樣我的依賴配置更新后卻得不到反映; 怎么禁止從cache中讀取配置?

    A: <filesystem name="local" checkmodified="true">


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導航:
     
    主站蜘蛛池模板: 在线精品自拍亚洲第一区| 青青青免费国产在线视频小草| 天堂在线免费观看中文版| 亚洲精选在线观看| 中文字幕成人免费高清在线视频 | 亚洲AV午夜成人影院老师机影院| 亚洲精品无码鲁网中文电影| 亚洲精品午夜久久久伊人| 8090在线观看免费观看| 亚洲综合激情视频| 18勿入网站免费永久| 亚洲国产高清精品线久久| 亚洲伊人久久大香线蕉苏妲己| a在线观看免费视频| 亚洲国产精品久久久久婷婷软件| 国产精品免费无遮挡无码永久视频| 永久免费观看的毛片的网站| MM1313亚洲精品无码久久| 亚洲色一色噜一噜噜噜| 国内精品免费久久影院| 成人黄动漫画免费网站视频 | 亚洲av无码专区在线播放| 91在线手机精品免费观看| 亚洲黄页网在线观看| 免费a级毛片视频| 国产免费一区二区三区不卡| 亚洲毛片在线免费观看| 女人张开腿等男人桶免费视频| 亚洲人成依人成综合网| 国产黄在线观看免费观看不卡 | 中文字幕亚洲无线码| 亚洲精品乱码久久久久久V| 午夜影院免费观看| 亚洲欧洲另类春色校园网站| 免费人成视频在线观看视频| 国产AV旡码专区亚洲AV苍井空| 久久精品亚洲福利| 九九九精品视频免费| 亚洲高清无在码在线电影不卡| 四虎www成人影院免费观看| 亚洲av专区无码观看精品天堂|