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 閱讀(2218) 評論(0)  編輯  收藏 所屬分類: project building

          主站蜘蛛池模板: 兴宁市| 彰化市| 玉溪市| 临朐县| 三门县| 浪卡子县| 卢湾区| 独山县| 石棉县| 仲巴县| 呼图壁县| 五河县| 抚州市| 阿尔山市| 惠安县| 福清市| 阿拉善右旗| 怀柔区| 张家川| 罗田县| 田林县| 铜鼓县| 莱州市| 通辽市| 兴仁县| 崇仁县| 长武县| 沛县| 巫溪县| 吴江市| 和静县| 浮山县| 蒙山县| 额尔古纳市| 宾川县| 奉贤区| 邳州市| 武义县| 柘荣县| 东阿县| 岳阳县|