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

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

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

    隨筆-94  評論-56  文章-3  trackbacks-0

    Ant是一個開放源代碼的構建工具,專門用于構建Java項目。
    Ant入門的最容易的方法就是編寫一個構建文件------build.xml。當Ant運行時,會在當前目錄下尋找名為build.xml的文件。

    編寫Ant構建文件:
    第一步:定義項目(project)
    在項目根目錄下創建build.xml文件。第一行指明其為XML格式,然后在第二行定義項目。
    <?xml version="1.0"?>
    <project name="dms" default="compile" basedir=".">
    一個Ant構建文件定義一個項目,使用<project>元素的name屬性命名項目,將default屬性設為compile,告訴Ant當你在命令行鍵入ant而無其他參數時,將執行構建過程的compile步驟。我們稍候將定義此步驟;將basedir屬性設為".",告訴Ant,該構建文件內的全部其他路徑都是相對于build.xml文件所在路徑而言的。
    第二步:定義性質(property)
    下一步,為項目的每一個目錄定義性質,以便讓Ant了解項目的目錄結構。
    ? <property name="build.dir"????? location="build"/>
    ? <property name="build.prod.dir" location="${build.dir}/prod"/>
    ? <property name="build.test.dir" location="${build.dir}/test"/>
    ? <property name="doc.dir"??????? location="doc"/>
    ? <property name="index.dir"????? location="index"/>
    ? <property name="src.dir"??????? location="src"/>
    ? <property name="test.dir"?????? location="test"/>
    ? <property name="vendor.lib.dir" location="vendor/lib"/>
    location屬性所指的目錄相對于<project>元素定義的basedir屬性值(基目錄)。
    使用Ant性質命名相對目錄有兩個優點。首先,當Ant運行構建文件時,會定位build.xml文件所在目錄的全部相對目錄。第二個好處是,性質可以使構建文件易于維護。例如用build.dir性質指代build目錄,當以后決定更改build目錄為classes時,只要修改build.dir性質的location屬性值即可。在構建文件中所有引用build.dir性質的地方,都將會自動指向新的classes目錄。
    第三步:定義路徑(path)
    下面定義表示項目Java類路徑的路徑。
    ? <path id="project.classpath">
    ??? <pathelement location="${build.prod.dir}" />
    ??? <pathelement location="${build.test.dir}" />
    ??? <fileset dir="${vendor.lib.dir}">
    ????? <include name="*.jar"/>
    ??? </fileset>
    ? </path>
    <path>元素創建路徑project.classpath。我們將在構建過程的編譯步驟用到此路徑。
    首先,用<pathelement>元素向路徑加入兩個構建目錄,以便Java編譯器可以找到所有的類文件,然后使用<fileset>元素,加入所有廠家.jar文件至此路徑,使Java編譯器可以找到我們用到的廠家類。
    第四步:定義目標(target)
    接著我們定義首個構建步驟------稱為“目標”。該目標創建編譯步驟將要存放Java類文件的目錄。
    ? <target name="prepare">
    ??? <mkdir dir="${build.prod.dir}"/>
    ??? <mkdir dir="${build.test.dir}"/>
    ? </target>
    目標只是定義了一系列任務按照指定的順序執行的有名字的構建步驟。prepare目標使用<mkdir>任務創建構建輸出目錄,這與在命令行上執行mkdir是等效的。但前者可以工作于任何操作系統下,不會因為目錄已經存在而失敗,而且必要時會創建父目錄。
    第五步:定義編譯步驟
    終于我們可以定義編譯步驟了。他將編譯所有的產品源文件,將結果類文件放到prepare目標所生成的目錄下。
    ? <target name="compile" depends="prepare">
    ??? <javac srcdir="${src.dir}" destdir="${build.prod.dir}">
    ????? <classpath refid="project.classpath" />
    ??? </javac>
    ? </target>
    通過目標的depends屬性,可以生成目標間的依存關系,從而指定目標順序。該屬性值是一個目標名間用逗號隔開的清單。
    例如,compile目標使用depends屬性來聲明與prepare目標的依存關系,這意味著要運行compile目標必須首先運行prepare目標,以在編譯源文件前生成要求的目錄。與shell腳本或批處理文件總是順序執行命令相比,這是一個很大的優點。
    prepare目標運行后,compile目標運行<javac>任務,從而調用Java編譯器。編譯器處理src.dir性質所指目錄下的全部Java源文件,在build.prod.dir性質所指目錄下生成對應的類文件。
    <classpath>元素告訴編譯器使用project.classpath代表的值作為類路徑。

    下面是完整的構建文件:

    <? xml?version="1.0" ?>
    <!--
    ??Excerpted?from?the?book,?"Pragmatic?Project?Automation"
    ??ISBN?0-9745140-3-9
    ??Copyright?2004?The?Pragmatic?Programmers,?LLC.??All?Rights?Reserved.
    ??Visit?www.PragmaticProgrammer.com
    ?
    -->

    < project? name ="dms" ?default ="compile" ?basedir ="." >
    ??
    ??
    < property? name ="build.dir" ??????location ="build" />
    ??
    < property? name ="build.prod.dir" ?location ="${build.dir}/prod" />
    ??
    < property? name ="build.test.dir" ?location ="${build.dir}/test" />
    ??
    < property? name ="doc.dir" ????????location ="doc" />
    ??
    < property? name ="index.dir" ??????location ="index" />
    ??
    < property? name ="src.dir" ????????location ="src" />
    ??
    < property? name ="test.dir" ???????location ="test" />
    ??
    < property? name ="vendor.lib.dir" ?location ="vendor/lib" />

    ??
    < path? id ="project.classpath" >
    ????
    < pathelement? location ="${build.prod.dir}" ? />
    ????
    < pathelement? location ="${build.test.dir}" ? />
    ????
    < fileset? dir ="${vendor.lib.dir}" >
    ??????
    < include? name ="*.jar" />
    ????
    </ fileset >
    ??
    </ path > ????

    ??
    < target? name ="prepare" >
    ????
    < mkdir? dir ="${build.prod.dir}" />
    ????
    < mkdir? dir ="${build.test.dir}" />
    ??
    </ target >


    ??
    < target? name ="compile" ?depends ="prepare" >
    ????
    < javac? srcdir ="${src.dir}" ?destdir ="${build.prod.dir}" >
    ??????
    < classpath? refid ="project.classpath" ? />
    ????
    </ javac >
    ??
    </ target >
    </ project >

    運行構建:
    在命令行環境中,切換至build.xml所在的目錄,運行Ant:
    D:\MyProject> ant
    運行Ant前,請確認ANT_HOME環境變量指向你的Ant安裝目錄,且PATH環境變量中加入了%ANT_HOME%\bin。
    Ant讀取build.xml,以預先定義的順序執行構建步驟(目標)。
    posted on 2006-08-30 17:36 小言身寸 閱讀(1910) 評論(0)  編輯  收藏 所屬分類: JAVA相關技術
    主站蜘蛛池模板: 另类图片亚洲校园小说区| 亚洲成aⅴ人在线观看| 精品特级一级毛片免费观看| 成人一a毛片免费视频| 久久精品国产亚洲AV忘忧草18| 精品无码国产污污污免费网站| 亚洲男人的天堂在线播放| 毛片免费在线观看| 亚洲国产综合91精品麻豆| 久久国产高潮流白浆免费观看| 亚洲综合一区二区精品导航| 18成禁人视频免费网站| 亚洲最大中文字幕| 无码人妻精品中文字幕免费东京热| 亚洲冬月枫中文字幕在线看| 69成人免费视频无码专区| 亚洲精品无码久久久久秋霞| 国产嫩草影院精品免费网址| 国产大陆亚洲精品国产| 在线观看午夜亚洲一区| 四虎成人精品永久免费AV| 亚洲国产精品综合久久网各| 妞干网免费视频在线观看| 国产亚洲日韩在线a不卡| 色久悠悠婷婷综合在线亚洲| 无码国产精品一区二区免费3p | 亚洲国产综合自在线另类| 69成人免费视频无码专区| 男人和女人高潮免费网站| 亚洲精品成人无码中文毛片不卡| 鲁大师在线影院免费观看| 亚洲一区在线观看视频| 国产jizzjizz免费看jizz| 黄 色一级 成 人网站免费| 亚洲第一页在线观看| 成人永久福利免费观看| 抽搐一进一出gif免费视频| 亚洲精品**中文毛片| 亚洲国产一成久久精品国产成人综合| 精品无码一级毛片免费视频观看 | 一级特黄特色的免费大片视频|