I want to fly higher
          programming Explorer
          posts - 114,comments - 263,trackbacks - 0

          1.http://ant.apache.org/
               1.下載:apache-ant-1.9.3-bin.zip
               2.解壓到C盤.
               3.設(shè)置環(huán)境變量PATH:C:\apache-ant-1.9.3\bin
               4.cmd下輸入:ant -version
                Apache Ant(TM) version 1.9.3 compiled on December 23 2013

          2.ant -help
           ant [options] [target [target2 [target3] ...]]

               常用:
               1.ant 使用當(dāng)前目錄下的build.xml運行Ant,執(zhí)行缺省的target
               2.ant -buildfile mavs.xml 使用當(dāng)前目錄下的build.xml運行Ant,執(zhí)行缺省的target
               3.ant -buildfile mavs.xml dist 使用當(dāng)前目錄下的mavs.xml運行Ant,執(zhí)行一個叫做dist的target
               4.-D選項可以設(shè)置屬性值

          3.Ant的4個核心元素:project、target、property、task

          4.project元素:
               1.project元素是Ant構(gòu)件文件的根元素,Ant構(gòu)件文件至少應(yīng)該包含一個project元素,否則會發(fā)生錯誤。在每個project元素下,可包含多個target元素
               2.name屬性:用于指定project元素的名稱
               3.default屬性:用于指定project默認執(zhí)行時所執(zhí)行的target的名稱
               3.basedir屬性:用于指定基路徑的位置。該屬性沒有指定時,使用Ant的構(gòu)件文件的父目錄作為基準目錄.

          5.target元素
               1.它為Ant的基本執(zhí)行單元,它可以包含一個或多個具體的任務(wù)。多個target可以存在相互依賴關(guān)系
               2.name屬性:指定target元素的名稱,這個屬性在一個project元素中是唯一的。我們可以通過指定target元素的名稱來指定某個target
               3.depends屬性:用于描述target之間的依賴關(guān)系,若與多個target存在依賴關(guān)系時,需要以“,”間隔。Ant會依照depends屬性中target出現(xiàn)的順序依次執(zhí)行每個target。被依賴的target會先執(zhí)行
               4.if屬性:用于驗證指定的屬性是否存在,若不存在,所在target將不會被執(zhí)行
               5.unless屬性:該屬性的功能與if屬性的功能正好相反,它也用于驗證指定的屬性是否存在,若不存在,所在target將會被執(zhí)行。
               6.description屬性:該屬性是關(guān)于target功能的簡短描述和說明

          6.property元素
               1.該元素可看作參量或者參數(shù)的定義,project的屬性可以通過property元素來設(shè)定,也可在Ant之外設(shè)定。若要在外部引入某文件,例如build.properties文件,可以通過如下內(nèi)容將其引入:<property file=” build.properties”/>
               2.property元素可用作task的屬性值。在task中是通過將屬性名放在“${”和“}”之間,并放在task屬性值的位置來實現(xiàn)的
               3.Ant提供了一些內(nèi)置的屬性,它能得到的系統(tǒng)屬性的列表與Java文檔中System.getPropertis()方法得到的屬性一致
                java.version Java 運行時環(huán)境版本 
                java.vendor Java 運行時環(huán)境供應(yīng)商 
                java.vendor.url Java 供應(yīng)商的 URL 
                java.home Java 安裝目錄 
                java.vm.specification.version Java 虛擬機規(guī)范版本 
                java.vm.specification.vendor Java 虛擬機規(guī)范供應(yīng)商 
                java.vm.specification.name Java 虛擬機規(guī)范名稱 
                java.vm.version Java 虛擬機實現(xiàn)版本 
                java.vm.vendor Java 虛擬機實現(xiàn)供應(yīng)商 
                java.vm.name Java 虛擬機實現(xiàn)名稱 
                java.specification.version Java 運行時環(huán)境規(guī)范版本 
                java.specification.vendor Java 運行時環(huán)境規(guī)范供應(yīng)商 
                java.specification.name Java 運行時環(huán)境規(guī)范名稱 
                java.class.version Java 類格式版本號 
                java.class.path Java 類路徑 
                java.library.path 加載庫時搜索的路徑列表 
                java.io.tmpdir 默認的臨時文件路徑 
                java.compiler 要使用的 JIT 編譯器的名稱 
                java.ext.dirs 一個或多個擴展目錄的路徑 
                os.name 操作系統(tǒng)的名稱 
                os.arch 操作系統(tǒng)的架構(gòu) 
                os.version 操作系統(tǒng)的版本 
                file.separator 文件分隔符(在 UNIX 系統(tǒng)中是“/”) 
                path.separator 路徑分隔符(在 UNIX 系統(tǒng)中是“:”) 
                line.separator 行分隔符(在 UNIX 系統(tǒng)中是“/n”) 
                user.name 用戶的賬戶名稱 
                user.home 用戶的主目錄 
                user.dir 用戶的當(dāng)前工作目錄
               4.Ant還提供了一些它自己的內(nèi)置屬性
                basedir:project基目錄的絕對路徑
                ant.file:buildfile的絕對路徑
                ant.version:Ant的版本
                ant.project.name:當(dāng)前指定的project的名字
                ant.java.version:Ant檢測到的JDK的版本

          7.ant常用任務(wù)
               1.copy任務(wù):文件和目錄的復(fù)制
                其常用屬性包括file/tofile/todir/
                另外fileset定義的是源目錄的組成形式,<include/>子屬性表示包括,<exclude/>子屬性表示排除
               2.delete任務(wù):對文件或目錄進行刪除
                其常用屬性包括file/dir
                可通過fileset指定includes/excludes
               3.mkdir任務(wù):創(chuàng)建目錄
               4.move任務(wù):移動文件或目錄
                其常用屬性包括file/tofile/todir
               5.echo任務(wù):根據(jù)日志或監(jiān)控器的級別輸出信息
                其常用屬性包括message/file/append/level/encoding等.
               6.javac任務(wù):編譯
                其常用屬性包括srcdir/destdir/classpath/debug等.
               7.jar任務(wù):jar
                其常用屬性包括destfile/basedir/manifest等.
               8.war任務(wù):war
                其常用屬性包括destfile/warfile/webxml等.
               9.java任務(wù):運行
                其常用屬性包括classname/jar/args等.

          8.ant manual
           1.在線:http://ant.apache.org/manual/index.html
           2.離線下載:http://ant.apache.org/manualdownload.cgi

          9.附本機的一個build.xml
              1.workspace包括mina-2.0.7源碼工程,mavs_common工程;mavs_protocol工程;mavs_example工程
              2.mina工程內(nèi)有l(wèi)ib目錄,為編譯mina源碼所需的jar
              3.mavs_common工程依賴mina工程,也有一個lib目錄為其余工程提供jar
              3.mavs_example工程依賴protocol工程,prototol工程依賴common工程
               該build.xml用來編譯mina源碼以及mavs項目并且發(fā)布.
              

          <?xml version="1.0" encoding="UTF-8"?>

          <project name="mavs" default="dist-mina" basedir=".">
              
              
          <!-- apache-mina源碼工程屬性 -->
              
          <property name="src.mina.dir" location="${basedir}/../apache-mina-2.0.7"/>
              
          <property name="src.mina.core.dir" location="${src.mina.dir}/mina-core"/>
              
          <property name="src.mina.example.dir" location="${src.mina.dir}/mina-example"/>
              
          <property name="src.mina.compression.dir" location="${src.mina.dir}/mina-filter-compression"/>
              
          <property name="src.mina.http.dir" location="${src.mina.dir}/mina-http"/>
              
          <property name="src.mina.beans.dir" location="${src.mina.dir}/mina-integration-beans"/>
              
          <property name="src.mina.jmx.dir" location="${src.mina.dir}/mina-integration-jmx"/>
              
          <property name="src.mina.ognl.dir" location="${src.mina.dir}/mina-integration-ognl"/>
              
          <property name="src.mina.xbean.dir" location="${src.mina.dir}/mina-integration-xbean"/>
              
          <property name="src.mina.statemachine.dir" location="${src.mina.dir}/mina-statemachine"/>
              
          <property name="src.mina.apr.dir" location="${src.mina.dir}/mina-transport-apr"/>
              
          <property name="src.mina.serial.dir" location="${src.mina.dir}/mina-transport-serial"/>
              
          <property name="src.mina.test.dir" location="${src.mina.dir}/test"/>
              
              
          <!-- mavs源碼工程屬性 -->
              
          <property name="src.mavs.common.dir" location="${basedir}/../mavs_common/src"/>
              
          <property name="src.mavs.protocol.dir" location="${basedir}/../mavs_protocol/src"/>
              
          <property name="src.mavs.example.dir" location="${basedir}/../mavs_example/src"/>
              
          <property name="mavs.common.lib.dir" location="${basedir}/../mavs_common/lib"/>
              
          <property name="mavs.example.resource.dir" location="${basedir}/../mavs_example/resource"/>
              
              
              
          <property name="build.dir" value="build"/>
              
          <property name="build.class.dir" location="${build.dir}/classes"/>
              
          <property name="build.lib.dir" location="${build.dir}/lib"/>
              
          <property name="build.resource.dir" location="${build.dir}/resource"/>
              
              
          <property name="build.dist.mina.dir" location="${build.dir}/dist/mina"/>
              
          <property name="build.dist.mavs.dir" location="${build.dir}/dist/mavs"/>
              
              
          <property name="dist.mina.jar" value="mina-2.0.7.jar"/>
              
          <property name="dist.mavs.jar" value="mavs.jar"/>
              
              
          <!--指定編譯的lib cp-->
              
          <path id="project.classpath">
                  
          <fileset dir="${build.lib.dir}">
                      
          <include name="**/*.jar"/>
                  
          </fileset>
              
          </path>
              
               
          <!-- Tasks -->
              
              
          <target name="clean">
                  
          <delete dir="${build.dir}"></delete>
              
          </target>
                  
              
          <target name="init" depends="clean">
                  
          <mkdir dir="${build.dir}"/>
                  
          <mkdir dir="${build.class.dir}"/>
                  
          <mkdir dir="${build.lib.dir}"/>
                  
          <mkdir dir="${build.dist.mina.dir}"/>
                  
          <mkdir dir="${build.dist.mavs.dir}"/>
                  
          <mkdir dir="${build.resource.dir}"/>
                  
                  
          <!-- 拷貝lib -->
                  
          <copy todir="${build.lib.dir}">
                      
          <fileset dir="${src.mina.dir}/lib"></fileset>
                      
          <fileset dir="${mavs.common.lib.dir}"></fileset>
                  
          </copy>
              
          </target>

              
          <!-- 編譯apache-mina-2.0.7 -->
              
          <target name="compile-mina" depends="init">
                  
          <javac srcdir="${src.mina.core.dir}" destdir="${build.class.dir}" debug="on" encoding="UTF-8">
                      
          <classpath refid="project.classpath"></classpath>
                  
          </javac>
                  
          <javac srcdir="${src.mina.compression.dir}" destdir="${build.class.dir}" debug="on" encoding="UTF-8">
                      
          <classpath refid="project.classpath"></classpath>
                  
          </javac>
                  
          <javac srcdir="${src.mina.http.dir}" destdir="${build.class.dir}" debug="on" encoding="UTF-8">
                      
          <classpath refid="project.classpath"></classpath>
                  
          </javac>
                  
          <javac srcdir="${src.mina.beans.dir}" destdir="${build.class.dir}" debug="on" encoding="UTF-8">
                      
          <classpath refid="project.classpath"></classpath>
                  
          </javac>
                  
          <javac srcdir="${src.mina.ognl.dir}" destdir="${build.class.dir}" debug="on" encoding="UTF-8">
                      
          <classpath refid="project.classpath"></classpath>
                  
          </javac>
                  
          <javac srcdir="${src.mina.xbean.dir}" destdir="${build.class.dir}" debug="on" encoding="UTF-8">
                      
          <classpath refid="project.classpath"></classpath>
                  
          </javac>
                  
          <javac srcdir="${src.mina.statemachine.dir}" destdir="${build.class.dir}" debug="on" encoding="UTF-8">
                      
          <classpath refid="project.classpath"></classpath>
                  
          </javac>
                  
          <javac srcdir="${src.mina.apr.dir}" destdir="${build.class.dir}" debug="on" encoding="UTF-8">
                      
          <classpath refid="project.classpath"></classpath>
                  
          </javac>
                  
          <javac srcdir="${src.mina.serial.dir}" destdir="${build.class.dir}" debug="on" encoding="UTF-8">
                      
          <classpath refid="project.classpath"></classpath>
                  
          </javac>
                  
          <javac srcdir="${src.mina.jmx.dir}" destdir="${build.class.dir}" debug="on" encoding="UTF-8">
                      
          <classpath refid="project.classpath"></classpath>
                  
          </javac>
                  
          <javac srcdir="${src.mina.example.dir}" destdir="${build.class.dir}" debug="on" encoding="UTF-8">
                      
          <classpath refid="project.classpath"></classpath>
                  
          </javac>
              
          </target>
              
              
          <!-- 打包mina -->
              
          <target name="dist-mina" depends ="compile-mina">
                  
          <jar destfile="${build.dist.mina.dir}/${dist.mina.jar}" basedir="${build.class.dir}"></jar>
              
          </target>
              
              
          <!-- 編譯mavs -->
              
          <target name="compile-mavs" depends = "compile-mina">
                  
          <javac srcdir="${src.mavs.common.dir}" destdir="${build.class.dir}" debug="on" classpathref="project.classpath" encoding="UTF-8">
                  
          </javac>
                  
          <javac srcdir="${src.mavs.protocol.dir}" destdir="${build.class.dir}" debug="on" classpathref="project.classpath" encoding="UTF-8">
                  
          </javac>
                  
          <javac srcdir="${src.mavs.example.dir}" destdir="${build.class.dir}" debug="on" classpathref="project.classpath" encoding="UTF-8">
                  
          </javac>
                  
          <!-- 拷貝example下的resource目錄 -->
                  
          <copy todir="${build.resource.dir}">
                      
          <fileset dir="${mavs.example.resource.dir}"></fileset>
                  
          </copy>
              
          </target>
              
              
          <!-- 打包mavs -->
              
          <target name="dist-mavs" depends ="compile-mavs">
                  
          <jar destfile="${build.dist.mavs.dir}/${dist.mavs.jar}" basedir="${build.class.dir}"></jar>
                  
          <!-- 刪除classes并拷貝jar至build根目錄 -->
                  
          <delete dir="${build.class.dir}"></delete>
                  
          <copy file="${build.dist.mavs.dir}/${dist.mavs.jar}" todir="${build.dir}"></copy>
              
          </target>

          </project>

           

          posted on 2014-02-01 20:40 landon 閱讀(1882) 評論(1)  編輯  收藏 所屬分類: Utils

          FeedBack:
          # re: Apache Ant基礎(chǔ)
          2014-02-23 21:55 | GoDaddy
          學(xué)習(xí)了Apache Ant基礎(chǔ)  回復(fù)  更多評論
            

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 怀来县| 古田县| 大田县| 碌曲县| 万宁市| 合肥市| 临颍县| 阿勒泰市| 红安县| 石棉县| 剑河县| 喀什市| 新闻| 郎溪县| 克什克腾旗| 太仆寺旗| 水富县| 南江县| 安徽省| 康平县| 突泉县| 桦甸市| 视频| 涟源市| 诸暨市| 府谷县| 卫辉市| 桐庐县| 仲巴县| 平湖市| 日土县| 正定县| 望城县| 疏勒县| 南京市| 清丰县| 昭平县| 武隆县| 辰溪县| 丹寨县| 田林县|