<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 小言身寸 閱讀(1904) 評論(0)  編輯  收藏 所屬分類: JAVA相關技術
    主站蜘蛛池模板: 99国产精品视频免费观看| 国产激情久久久久影院老熟女免费| 最近中文字幕免费mv在线视频| 亚洲毛片αv无线播放一区| 久久国产精品免费一区二区三区| 全部免费毛片免费播放| 窝窝影视午夜看片免费| 亚洲综合区小说区激情区| 国产免费AV片在线观看播放| 久久精品亚洲男人的天堂 | 亚洲av产在线精品亚洲第一站| 亚欧人成精品免费观看| 亚洲色大成网站www永久男同| 永久黄网站色视频免费直播| 国产亚洲福利精品一区二区| 国产亚洲午夜高清国产拍精品| 男女一进一出抽搐免费视频| 亚洲AV成人精品网站在线播放| 19禁啪啪无遮挡免费网站| 性xxxx黑人与亚洲| 男人的天堂亚洲一区二区三区| 精品亚洲456在线播放| 吃奶摸下高潮60分钟免费视频| fc2免费人成在线视频| 亚洲国产精品第一区二区| 18禁免费无码无遮挡不卡网站 | 国产亚洲成归v人片在线观看 | 亚洲国产精品久久66| 国产亚洲3p无码一区二区| 亚洲第一网站免费视频| 亚洲白色白色永久观看| 亚洲gv白嫩小受在线观看| 亚洲精品第一国产综合精品99 | 亚洲精品国精品久久99热一| 日韩高清在线高清免费| 九九精品免费视频| 2021精品国产品免费观看| 最近国语视频在线观看免费播放| 无人视频在线观看免费播放影院| 伊人久久五月丁香综合中文亚洲 | 亚洲精品无码永久中文字幕|