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

    其他鏈接

    友情鏈接

    最新評論

    ivy教程(11)-架設(shè)倉庫(3)-使用命名空間

        現(xiàn)在你已經(jīng)看到從一個已經(jīng)存在的倉庫創(chuàng)建你自己的倉庫是如何的簡單,你可能會想知道如何處理更加復(fù)雜的情況,例如當(dāng)源倉庫和目的地倉庫不遵循相同的命名約定。

        1) 通往專業(yè)倉庫之路

        我們將學(xué)習(xí)這個如何構(gòu)建一個專業(yè)倉庫的章節(jié)。什么是專業(yè)倉庫?我們的觀點是一個良好質(zhì)量的倉庫必須遵循有關(guān)項目命名的清晰的規(guī)則,并必須提供正確,可用,可配置和驗證過的項目描述符。為了達(dá)到這些目標(biāo),我們認(rèn)為你必須構(gòu)建你自己的倉庫。

        在前面的例子里面我們已經(jīng)看到,我們可以使用一些公共倉庫看來開始構(gòu)建我們自己的倉庫。然而,結(jié)果并不總是那么理想, 尤其是關(guān)系到使用的命名規(guī)則。 

        當(dāng)你有一個已經(jīng)存在的倉庫并且希望從大量的不遵循相同的命名轉(zhuǎn)換的公共倉庫中獲益時,這個問題非常常見。或者僅僅是因為你發(fā)現(xiàn)你作為基礎(chǔ)使用的倉庫不夠一直- 為什么所有的apache commons模塊不適用org.apache.commons 組織? 歷史原因。但是如果你安裝你自己的倉庫,你可能不想從歷史中蒙受損失。

        幸運的是,對于這種問題ivy有一種非常強大的答復(fù):namespaces.

        2) 使用命名空間
        當(dāng)你查看前面教程構(gòu)建的倉庫時,你將清晰的看到我們正在談?wù)摰臇|西:所有apache commons模塊使用它們自己的名字作為組織。

        因此讓我們看一下通過使用namespaces ivy可以做什么(稍后我們將深入細(xì)節(jié)):

    Z:\>ant commons-lang-1-0-ibiblio-with-namespace
    Buildfile: build.xml

    load-ivy:

    init-ivy:

    maven2-namespace:
    [ivy:install] :: loading settings :: url = jar:file://home/xavier/.ivy2/jars/ivy.jar!/org/apache/ivy/core/settings/ivysettings.xml
    [ivy:install] :: Ivy 2.0.0-beta1-local-20071130005044 - 20071130005044 :: http://ant.apache.org/ivy/ ::
    :: loading settings :: file = /home/xavier/ivy/settings/ivysettings-advanced.xml
    [ivy:install] :: installing apache#commons-lang;1.0 ::
    [ivy:install] :: resolving dependencies ::
    [ivy:install]   found apache#commons-lang;1.0 in libraries
    [ivy:install] :: downloading artifacts to cache ::
    [ivy:install] downloading http://repo1.maven.org/maven2/commons-lang/commons-lang/1.0/commons-lang-1.0.jar ...
    [ivy:install] ........ (62kB)
    [ivy:install] .. (0kB)
    [ivy:install]   [SUCCESSFUL ] apache#commons-lang;1.0/commons-lang.jar[jar] (1612ms)
    [ivy:install] :: installing in my-repository ::
    [ivy:install]   published commons-lang to /home/xavier/ivy/myrepository/advanced/apache/commons-lang/jars/commons-lang-1.0.jar
    [ivy:install]   published ivy to /home/xavier/ivy/myrepository/advanced/apache/commons-lang/ivys/ivy-1.0.xml
    [ivy:install] :: install resolution report ::
            ---------------------------------------------------------------------
            |                  |            modules            ||   artifacts   |
            |       conf       | number| search|dwnlded|evicted|| number|dwnlded|
            ---------------------------------------------------------------------
            |      default     |   1   |   1   |   0   |   0   ||   1   |   1   |
            ---------------------------------------------------------------------

    BUILD SUCCESSFUL
    Total time: 3 seconds

        現(xiàn)在我們看一下我們的倉庫,它看上去很好。

    Z:\>dir /s /B /A:-D myrepository\advanced
    Z:\myrepository\advanced\apache\commons-lang\ivys\ivy-1.0.xml
    Z:\myrepository\advanced\apache\commons-lang\ivys\ivy-1.0.xml.md5
    Z:\myrepository\advanced\apache\commons-lang\ivys\ivy-1.0.xml.sha1
    Z:\myrepository\advanced\apache\commons-lang\jars\commons-lang-1.0.jar
    Z:\myrepository\advanced\apache\commons-lang\jars\commons-lang-1.0.jar.md5
    Z:\myrepository\advanced\apache\commons-lang\jars\commons-lang-1.0.jar.sha1

        我們甚至可以看一下我們倉庫中的commons-lang ivy文件:

    <?xml version="1.0" encoding="UTF-8"?>
    <ivy-module version="1.0">
        
    <info organisation="apache"
            module
    ="commons-lang"
            revision
    ="1.0"
            status
    ="integration"
            publication
    ="20051124062021"
            namespace
    ="ibiblio-maven2"
        
    />
    ......

        很好,我們看到組織現(xiàn)在是'apache'。但是ivy是從哪里獲得這個的呢?

        1. 這是如何工作的?

        實際上ivy和以往一樣使用同樣的倉庫作為源倉庫,僅僅有一點不同:namespace參數(shù)。

    <ibiblio    name="libraries"
        root
    ="${ibiblio-maven2-root}"
        m2compatible
    ="true"
        namespace
    ="maven2"
    />

        namespace由一系列規(guī)則定義而成。這些規(guī)則基于正則表達(dá)式,并告訴ivy如何從倉庫命名空間轉(zhuǎn)換數(shù)據(jù)到系統(tǒng)命名空間,換言之,ivy時常運行的命名空間(例如ivy 緩存通常使用系統(tǒng)命名空間).

        對于我們調(diào)用maven2的命名空間,我們已經(jīng)定義了一些規(guī)則,這里是一個:

        處理導(dǎo)入apache maven1項目的規(guī)則

    <rule>    <!-- imported apache maven1 projects -->
        
    <fromsystem>
            
    <src org="apache" module=".+"/>
           
            
    <dest org="$m0" module="$m0"/>
        
    </fromsystem>
        
    <tosystem>
            
    <src org="commons-.+" module="commons-.+" />
            
    <src org="ant.*" module="ant.*" />
            ...
            
    <src org="xmlrpc" module="xmlrpc" />

            
    <dest org="apache" module="$m0"/>
        
    </tosystem>
    </rule>

        理解命名空間:

        (1) fromsystem : 在這里我們定義,在系統(tǒng)命名空間中以組織"apache"定義的項目被轉(zhuǎn)換為目的地命名空間中使用模塊名為組織的項目,無論修訂版本是什么.例如,系統(tǒng)命名空間中的項目apache#commons-lang;1.0獎被轉(zhuǎn)換為maven2解析器命名空間中的commons-lang#commons-lang;1.0。

        (2) tosystem : 在這里我們定義反向映射,換言之從maven2倉庫轉(zhuǎn)換apache項目到系統(tǒng)命名空間的apache項目。這里使用的規(guī)則告訴說所有組織名匹配commons-.+ (把它看成java正則表達(dá)式)項目被轉(zhuǎn)換為組織是apache而模塊名還是原來的項目。同樣的規(guī)則被使用到其他apache項目例如ant等等。

        注意正則表達(dá)式的用法:為了識別在組織,模塊和修訂版本中找到的正則表達(dá)式, 使用的表示法用字母'o', 'm' 和'r'作為匹配的正則表達(dá)式的前綴。
    $o0 : 在組織屬性中完全匹配的值
    $o1 : 在組織屬性中標(biāo)記的第一個匹配的語法分組
    ...
    同樣應(yīng)用在模塊中: $m0, $m1, ...
    也用于修訂版本 : $r0, $r1, ...

        好了,現(xiàn)在你知道命名空間背后的想法了,現(xiàn)在你可以檢查例子中提供的整個命名空間的設(shè)置,并使用命名空間測試模塊和它的依賴的安裝。

        運行
    ant maven2-namespace-deps

        然后你將看到結(jié)果倉庫比我們第一次構(gòu)件的清晰了。

        從我們的經(jīng)驗來看,創(chuàng)建命名空間的花費是值得的,如果你經(jīng)常需要在你自己的倉庫中,這里命名規(guī)則已經(jīng)存在或者更加嚴(yán)格,為第三方類庫增加新的模塊或者修訂版本。


    posted on 2009-10-09 21:04 sky ao 閱讀(1660) 評論(0)  編輯  收藏 所屬分類: project building

    主站蜘蛛池模板: 女人张开腿等男人桶免费视频| 丝袜足液精子免费视频| 嘿嘿嘿视频免费网站在线观看| 亚洲高清国产拍精品26U| 两个人看的www高清免费观看| 国产亚洲精品免费视频播放 | 亚洲人妖女同在线播放| 很黄很黄的网站免费的| 自拍日韩亚洲一区在线| 在线免费不卡视频| 精品韩国亚洲av无码不卡区| 免费欧洲美女牲交视频| 一级A毛片免费观看久久精品| 亚洲日本韩国在线| 少妇太爽了在线观看免费视频 | 亚洲一区二区三区91| 99久久免费精品国产72精品九九 | 香蕉免费看一区二区三区| 亚洲精品亚洲人成人网| 久久中文字幕免费视频| 亚洲国产精品综合久久久| 午夜两性色视频免费网站| 无码精品人妻一区二区三区免费 | 久久大香香蕉国产免费网站 | 亚洲成人动漫在线观看| 在线观看视频免费国语| 一级毛片在线免费播放| 久久久久无码精品亚洲日韩| 噼里啪啦免费观看高清动漫4| 亚洲国产成人无码AV在线| 亚洲人成人无码网www国产| 国产麻豆一精品一AV一免费| 亚洲欧洲精品视频在线观看| 日韩免费视频播播| 国内精品免费在线观看| 亚洲娇小性xxxx色| 久久亚洲国产成人影院网站| 大学生一级毛片免费看| 久久成人18免费网站| tom影院亚洲国产一区二区| 亚洲最大av无码网址|