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

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

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

    Sky's blog

    我和我追逐的夢

    常用鏈接

    統計

    其他鏈接

    友情鏈接

    最新評論

    ivy中文參考文檔(11)-ant任務

        1) ant任務

        使用ivy的主要和最頻繁的方式是在ant構建文件中。不過,ivy也可以作為獨立的應用被調用。

        如果你使用ant版本1.6.0 或更高,你僅僅需要添加ivy的命名空間到你的項目中(你的project標簽的屬性)

    xmlns:ivy="antlib:org.apache.ivy.ant"

        這樣你就可以調用ivy任務了。

        如果你想讓你的構建處理ivy.jar,不管是在ant的lib目錄還是在本地的lib目錄。你可以類似這樣使用任務定義

    <path id="ivy.lib.path">
        
    <fileset dir="path/to/dir/with/ivy/jar" includes="*.jar"/>
    </path>
    <taskdef resource="org/apache/ivy/ant/antlib.xml"
             uri
    ="antlib:org.apache.ivy.ant" classpathref="ivy.lib.path"/>

        結合項目命名空間中的antlib定義,它將從你的ant類庫或者本地目錄(在這個例子中試path/to/dir/with/ivy/jar)裝載ivy類。

        如果你使用ant1.5.1或者更高,你不得不定義你在你的構建文件中使用的任務。例如:

      <taskdef name="ivy-configure" classname="org.apache.ivy.ant.IvyConfigure"/>
      
    <taskdef name="ivy-resolve" classname="org.apache.ivy.ant.IvyResolve"/>
      
    <taskdef name="ivy-retrieve" classname="org.apache.ivy.ant.IvyRetrieve"/>
      
    <taskdef name="ivy-deliver" classname="org.apache.ivy.ant.IvyDeliver"/>
      
    <taskdef name="ivy-publish" classname="org.apache.ivy.ant.IvyPublish"/>

        注意:上面列出的任務并不是詳盡。為了完整的有對應類的任務列表,請查看svn中的或者你使用的版本的antlib.xml

        然后你可以使用任務,但是檢查他們的名字,下面的例子假設你使用ivy命名空間(ivy:xxx任務),不過對于ant1.5你不能使用命名空間,如果你想遵循上面的任務定義可以使用ivy-xxx任務。

        如果你使用低于1.5.1的ant版本,你不能使用ivy任務...你應該作為外部程序來調用ivy。

        2) 從ant中調用ivy: 開始步驟

        一旦你的構建文件可以調用ivy任務,最簡單的使用ivy的任務就是不帶任何參數的調用ivy的retrieve任務。

    <ivy:retrieve />

        這將使用默認值調用ivy,在很多項目中是可行的。實際上,它等同于

    <target name="resolve">
        
    <ivy:configure />
       
        
    <ivy:resolve file="${ivy.dep.file}" conf="${ivy.configurations}" />
       
        
    <ivy:retrieve pattern="${ivy.retrieve.pattern}" conf="${ivy.configurations}" />
    </target>

        這三個任務遵循ivy獲取依賴過程的3個主要步驟:

        * 首先configure任務通過給出一個xml配置文件的路徑來講述怎樣找到依賴。
        * 然后resolve任務實際解析ivy文件描述的依賴,并將這些依賴放置到ivy緩存(在配置文件中配置的一個目錄)
        * 最后retrieve任務從緩存中復制依賴到任何你想要的文件系統中。隨后你可以用這些依賴用標準ant路徑來構造你的classpath。

        為了更準確的理解ivy任務的行為,需要要知道在configure被調用的開始ivy裝載了一個屬性文件。這個屬性文件包含以下屬性:

    ivy.project.dir = ${basedir}
    ivy.lib.dir = ${ivy.project.dir}/lib
    ivy.build.artifacts.dir = ${ivy.project.dir}/build/artifacts
    ivy.distrib.dir = ${ivy.project.dir}/distrib
       
    ivy.resolver.default.check.modified = false
    ivy.default.always.check.exact.revision = true

    ivy.configurations = *
    ivy.resolve.default.type.filter = *
    ivy.status = integration
    ivy.dep.file = ivy.xml
    ivy.settings.file = ivysettings.xml
    ivy.retrieve.pattern = ${ivy.lib.dir}/[artifact]-[revision].[ext]
    ivy.deliver.ivy.pattern = ${ivy.distrib.dir}/[type]s/[artifact]-[revision].[ext]
    ivy.publish.src.artifacts.pattern = ${ivy.distrib.dir}/[type]s/[artifact]-[revision].[ext]

    ivy.report.output.pattern = [organisation]-[module]-[conf].[ext]

    ivy.buildlist.ivyfilepath = ivy.xml

    ivy.checksums=sha1,md5

        這些屬性的最新版本你可以檢查svn版本。

        2.0之后,在調用第一個ivy任務后,屬性ivy.version將可用并包含被使用的ivy類庫的版本。

        2) ivy任務屬性: 概論
        任務屬性的值可能通過不同位置提供。這三個可能的位置是:

       1. 任務屬性
       2. 實例
       3. 項目屬性

        位置被要求使用這種順序,因此任務在任務屬性中設置的值將覆蓋在ivy實例中發現的值,例如。

        這里考慮的ivy實例是類Ivy的一個實例,通過調用configure任務建立,并且隨后被其他任務重用。因為大部分任務需要ivy實例,他們首先檢查是否有實例可用(例如 configure已經被調用),如果沒有一個可用,則調用默認的configure,將得到的ivy實例結果用于后面的任務(除非另外一個configure被調用)。

        通常理解這些不是必須的,但是如果你忘記在其他任務前調用configure而在你的環境中configure步驟是必須的,這將導致一些問題。

        3) 主要任務的通常周期



        4) 示例

        這里有一個使用ivy的更加復雜的構建文件的例子:

    <project xmlns:ivy="antlib:org.apache.ivy.ant" name="sample" default="resolve">

        
    <target name="resolve">
            
    <ivy:configure file="../ivysettings.xml" />
            
            
    <ivy:resolve file="my-ivy.xml" conf="default, myconf" />
            
        
    </target>
        
        
    <target name="retrieve-default" depends="resolve">
            
    <ivy:retrieve pattern="lib/default/[artifact]-[revision].[ext]" conf="default" />
        
    </target>

        
    <target name="retrieve-myconf" depends="resolve">
            
    <ivy:retrieve pattern="lib/myconf/[artifact]-[revision].[ext]" conf="myconf" />
        
    </target>

        
    <target name="retrieve-all" depends="resolve">
            
    <ivy:retrieve pattern="lib/[conf]/[artifact]-[revision].[ext]" conf="*" />
        
    </target>

        
    <target name="deliver" depends="retrieve-all">
            
    <ivy:deliver deliverpattern="distrib/[artifact]-[revision].[ext]"
                         pubrevision
    ="1.1b4" pubdate="20050115123254" status="milestone" />
        
    </target>

        
    <target name="publish" depends="deliver">
            
    <ivy:publish resolver="internal" 
                         artifactspattern
    ="distrib/[artifact]-[revision].[ext]" 
                         pubrevision
    ="1.1b4" />
        
    </target>
    </project>

        所有的ivy任務在隨后的頁面中介紹。

    posted on 2009-07-23 08:21 sky ao 閱讀(2214) 評論(0)  編輯  收藏 所屬分類: project building

    主站蜘蛛池模板: 亚洲最大在线视频| 亚洲黄色片在线观看| 久久水蜜桃亚洲AV无码精品| 无码区日韩特区永久免费系列 | 精品亚洲视频在线| 日本大片在线看黄a∨免费| 亚洲精品国产第一综合99久久 | 青苹果乐园免费高清在线| 色婷五月综激情亚洲综合| 天天摸天天操免费播放小视频| 亚洲AV综合色区无码一二三区| 免费看美女被靠到爽| 免费在线观看亚洲| 国产亚洲精品免费视频播放| 久久国产乱子伦精品免费强| 亚洲AV日韩AV鸥美在线观看| 国产精品久久永久免费| 亚洲性色AV日韩在线观看| 啊灬啊灬别停啊灬用力啊免费看| jizz18免费视频| 婷婷亚洲综合五月天小说| 男女超爽刺激视频免费播放| 亚洲6080yy久久无码产自国产| 亚洲国产精品国产自在在线| 国内精品一级毛片免费看| 亚洲国产精品久久久久秋霞影院| 午夜免费不卡毛片完整版| 九九免费观看全部免费视频| 亚洲综合久久综合激情久久 | 日韩中文字幕精品免费一区| 精品国产亚洲AV麻豆| 久久亚洲高清观看| 成人特黄a级毛片免费视频| 国产精品永久免费视频| 亚洲精品美女在线观看播放| 四虎影视永久免费视频观看| a级毛片毛片免费观看久潮| 在线观看日本亚洲一区| 综合久久久久久中文字幕亚洲国产国产综合一区首 | 国产AV无码专区亚洲AWWW| 91精品国产免费入口|