主要內容:
1 java的構建工具ant
2 ant 的projects,targets,tasks,properties
3 簡單的ant 構建檔案
5.3.1
xml和html
xml:extensible markup language 可延伸標記語言 (XML)
1) html表現的是如何在網頁上顯示資料,他定義了一套標準的標籤。
2) Html的標籤有開始標籤,可以沒有結束標籤如:《p》….《/p》也可以《p》而xml則必須匹配開始和結束標籤
3) Xml的標籤的嵌套必須正確而html則不必如:《b》《i》this is not valid in xml《/b》《/i》
4) Xml的標籤是大小寫敏感的,html則不是
元素:一個開始標籤和一個結束標籤定義了一個元素。
屬性:開始標籤中的名-值對是屬性
xml中的注釋:《! - - do something here - - 》
空元素的寫法:《java classname=”Hello.class”》《/java》或《java classname=”Hello.class” /》
5.3.2 ant 的預設構建描述檔案是build.xml
在eclipse中運行ant指令碼:在build.xml上右鍵選擇run ant 可在控制台中顯示結果
ant已整合到eclipse中,如果要得到新版本的ant,則其下載地址是:http://ant.apache.org
A 《project》
屬性 描述 是否必須
default 要啟動並執行預設目標 Y
name 項目名 N
basedir 基目錄 N
description 項目描述 N
屬性
《project name=”Hello” default=”compile” basedir=”.” Description=”Hello,World build file”》
‘.’代表的是build.xml所在的目錄
可以嵌套的標籤《description》《target》《property》
B Targets
屬性 描述 是否必須
name 目標名 Y
depends 依賴列表 N
if 指定屬性被設定時執行 N
unless 當指定屬性未被設定時執行 N
description 目標描述 N
《target name=”compile” depends=”init” description =”Compile all sources”》
C Tasks
《buildnumber》從檔案中讀取構建的計數器每構建一次計數器加一寫迴文件
屬性 描述 是否必須
file 讀取的屬性預設build.number N
《buildnumber file=”buildnum.txt” /》
copy任務屬性
屬性 描述 是否必須
file 源檔案名稱 Y,除非使用fileset
tofile 目標檔案名 Y,除非使用 todir
todir 目標目錄 Y,如果多於1個檔案
overwrite 覆蓋較新的目標檔案 N,預設false
includeEmptyDirs 拷貝空目錄 N,預設true
failonerror 檔案未發現停止構建 N,預設true
verbose 列出拷貝檔案 N,預設false
《copy file=”log4j.properties” todir=”bin” /》
《copy》拷貝一個檔案file 屬性 拷貝一組檔案 《fileset》 元素嵌套
delete任務屬性
屬性 描述 是否必須
file 要刪除的檔案 Y,除非是dir或fileset
dir 要刪除的目錄 Y,除非file fileset
verbose 刪除檔案清單 N,預設false
failonerror 有錯誤停在 N,預設true
includeEmptyDirs 刪除的目錄當fileset指定 N,預設false
《delete file=”ant.log” /》
《delete dir=”temp” /》
《delete》 刪除一個檔案使用file屬性,一組檔案用《fileset》元素嵌套或目錄用 directory屬性
echo任務屬性:
《echo》向終端,檔案寫資訊
屬性 描述 是否必須
message 資訊 Y,除非文本做為元素內容
file 輸出檔案 N
append 是否追加到檔案 N,預設false
《echo messag=”Hello” /》
《echo》this is a Message form ant 《/echo》
jar任務屬性:
《jar》將一組檔案壓縮為一個jar檔案
屬性 描述 是否必須
destfile Jar檔案名稱 Y
basedir 要打包的目錄 N
includes 包含的檔案 N
excludes 排除的檔案 N
《jar destfile=”dist/persistence.jar” basedir=”bin” includes=”org/ecli/persis/**,org/ecli/astr/**” excludes=”*Text*.class” /》
《jar destfile="dist/persistence.jar"》
《include name="**/*.class"/》
《exclude name="**/*Test*"/》
《/jar》
java任務屬性:
《java》 可以嵌套的元素《classpath》用來替代classpath屬性
屬性 描述 是否必須
classname 要啟動並執行類名 Y,除非指定jar
jar 執行的jar Y,除非指定clsssname
classpath 使用的類路徑 N
fork 是否使用較新的JVM N,預設false
failonerror 錯誤發生是否停止 N,預設false
output 輸出檔案 N
append 追加或覆蓋預設檔案 N
《java classname="HelloWorld"/》
《java classname="Add" classpath="${basedir}/bin"》
《arg value="100"/》
《arg value="200"/》
《/java》
《arg》 指定命令列參數
javac任務屬性:
《javac》 編譯java檔案 可以嵌套的元素《classpath》《jar》
屬性 描述 是否必須
srcdir 來源目錄 Y,除非src使用
destdir 輸出目錄 N
includes 包含的編譯檔案 N,預設包含所有java檔案
excludes 忽略的檔案 N
classpath 使用的類路徑 N
debug 是否包含調試資訊 N,預設false
optimize 使用最佳化 N,預設false
verbose 提供verbose輸出 N
failonerror 錯誤發生是否停止 N,預設true
《javac srcdir="src" destdir="bin"/》
《javac srcdir="${basedir}" destdir="bin"
includes="org/eclipseguide/persistence/**"
excludes="**/*Test*"》
《classpath》
《pathelement path="${java.class.path}"/》
《pathelement location=
"D:/log4j/jakarta-log4j-1.2.8/dist/lib/log4j-1.2.8.jar"/》
《/classpath》
《/javac》
javadoc任務屬性:
《javadoc》從java的源檔案中產生javadoc文檔,可嵌套的元素為《fileset》《packageset》《classpath》
屬性 描述 是否必須
sourcepath 源路徑 Y,除非指定sorcefiles,sorcepathref
sourcepathref 源路徑參照 Y, 除非指定sorcepath,sorcefiles
sourcefiles 源檔案,逗號分隔 Y, 除非指定sorcepath,sorcepathref
destdir 目標目錄 Y, 除非指定doclet
classpath 類路徑 N
public 僅顯示公用類,成員 N
protected 僅顯示保護的,公用類,成員 N,預設true
package 僅顯示包,保護的,公用類,成員 N
private 顯示所有類,成員 N
version 包含版本資訊 N
use 包含use資訊 N
author 包含作者資訊 N
failonerror 錯誤發生是否停止 N,預設true
《javadoc destdir="doctest"
sourcefiles=
"src/org/eclipseguide/persistence/ObjectManager.java"/》
《javadoc destdir="doc"
author="true"
version="true"
use="true"
package="true"》
《fileset dir="${src}/org/eclipseguide/astronomy/"》
《include name="**/*.java"/》
《exclude name="**/*Test*"/》
《/fileset》
《classpath》
《pathelement path="${java.class.path}"/》
《pathelement location=
"D:/log4j/jakarta-log4j-1.2.8/dist/lib/log4j-1.2.8.jar"/》
《/classpath》
《/javadoc》
《mkdir》建立目錄
屬性 描述 是否必須
dir 要建立的目錄 Y
《mkdir dir="dist/doc"/》
《tstamp》時間戳記
DSTAMP yyyyMMdd
TSTAMP hhmm
TODAY MMM dd yyyy
C 屬性
可以把屬性寫在一個檔案中,用《property file=”build.properties”》指定並讀取
# build.properties
junit_home=D:/junit/junit3.8.1
log4j_home=D:/log4j/jakarta-log4j-1.2.8
可以這樣使用:
《property file="build.properties"/》
D fileset
《fileset》中的萬用字元
‘?’ 任何一個字元
‘*’0個或多個字元
‘**’0個或多個目錄
屬性 描述 是否必須
dir 目錄 Y
includes 包含檔案 N
excludes 排除檔案 N
《fileset dir="src/org/eclipseguide/astronomy"
includes="**/*.java"
excludes="**/*Test*"/》
《fileset dir="src/org/eclipseguide/astronomy/"》
《include name="**/*.java"/》
《exclude name="**/*Test*"/》
《/fileset》
E classpath
屬性 描述 是否必須
path 路徑 N
location 獨立檔案或目錄 N
《classpath path="bin"/》
《classpath》
《pathelement path="${java.class.path}"/》
《pathelement location="${junit_path}"/》
《pathelement location="${log4j_path}"/》
《/classpath》
F refid
ant的元素都可以設定一個ID,你可以通過這個ID來引用這個元素
設定classpath
《classpath id="common_path"》
《pathelement path="${java.class.path}"/》
《pathelement location="${junit_path}"/》
《pathelement location="${log4j_path}"/》
《/classpath》
引用:
《javac srcdir="src" destdir="bin"》
《classpath refid="common_path"/》
《/javac》