4.1 File(Directory)類
4.1.1 Mkdir 創(chuàng)建一個目錄,如果他的父目錄不存在,也會被同時創(chuàng)建。 例子: <mkdir dir="build/classes"/> 說明: 如果build不存在,也會被同時創(chuàng)建 4.1.2 Copy 拷貝一個(組)文件、目錄 例子: 1. 拷貝單個的文件: <copy file="myfile.txt" tofile="mycopy.txt"/> 2. 拷貝單個的文件到指定目錄下 <copy file="myfile.txt" todir="../some/other/dir"/> 3. 拷貝一個目錄到另外一個目錄下 <copy todir="../new/dir"> <fileset dir="src_dir"/> </copy> 4. 拷貝一批文件到指定目錄下 <copy todir="../dest/dir"> <fileset dir="src_dir"> <exclude name="**/*.java"/> </fileset> </copy> <copy todir="../dest/dir"> <fileset dir="src_dir" excludes="**/*.java"/> </copy> 5. 拷貝一批文件到指定目錄下,將文件名后增加。Bak后綴 <copy todir="../backup/dir"> <fileset dir="src_dir"/> <mapper type="glob" from="*" to="*.bak"/> </copy> 6. 拷貝一組文件到指定目錄下,替換其中的@標(biāo)簽@內(nèi)容 <copy todir="../backup/dir"> <fileset dir="src_dir"/> <filterset> <filter token="TITLE" value="Foo Bar"/> </filterset> </copy> 4.1.3 Delete 刪除一個(組)文件或者目錄 例子 1. 刪除一個文件 <delete file="/lib/ant.jar"/> 2. 刪除指定目錄及其子目錄 <delete dir="lib"/> 3. 刪除指定的一組文件 <delete> <fileset dir="." includes="**/*.bak"/> </delete> 4. 刪除指定目錄及其子目錄,包括他自己 <delete includeEmptyDirs="true"> <fileset dir="build"/> </delete> 4.1.4 Move 移動或重命名一個(組)文件、目錄 例子: 1. 移動或重命名一個文件 <move file="file.orig" tofile="file.moved"/> 2. 移動或重命名一個文件到另一個文件夾下面 <move file="file.orig" todir="dir/to/move/to"/> 3. 將一個目錄移到另外一個目錄下 <move todir="new/dir/to/move/to"> <fileset dir="src/dir"/> </move> 4. 將一組文件移動到另外的目錄下 <move todir="some/new/dir"> <fileset dir="my/src/dir"> <include name="**/*.jar"/> <exclude name="**/ant.jar"/> </fileset> </move> 5. 移動文件過程中增加。Bak后綴 <move todir="my/src/dir"> <fileset dir="my/src/dir"> <exclude name="**/*.bak"/> </fileset> <mapper type="glob" from="*" to="*.bak"/> </move> 4.2 Java相關(guān)
4.2.1 Javac 編譯java原代碼 例子 1. <javac srcdir="${src}" destdir="${build}" classpath="xyz.jar" debug="on" /> 編譯${src}目錄及其子目錄下的所有。Java文件,。Class文件將放在${build}指定的目錄下,classpath表示需要用到的類文件或者目錄,debug設(shè)置為on表示輸出debug信息 2. <javac srcdir="${src}:${src2}" destdir="${build}" includes="mypackage/p1/**,mypackage/p2/**" excludes="mypackage/p1/testpackage/**" classpath="xyz.jar" debug="on" /> 編譯${src}和${src2}目錄及其子目錄下的所有。Java文件,但是package/p1/**,mypackage/p2/**將被編譯,而mypackage/p1/testpackage/**將不會被編譯。Class文件將放在${build}指定的目錄下,classpath表示需要用到的類文件或者目錄,debug設(shè)置為on表示輸出debug信息 3. <property name="classpath" value=".;./xml-apis.jar;../lib/xbean.jar;./easypo.jar"/> <javac srcdir="${src}" destdir="${src}" classpath="${classpath}" debug="on" /> 路徑是在property中定義的 4.2.2 java 執(zhí)行指定的java類 例子: 1. <java classname="test.Main"> <classpath> <pathelement location="dist/test.jar"/> <pathelement path="${java.class.path}"/> </classpath> </java> classname中指定要執(zhí)行的類,classpath設(shè)定要使用的環(huán)境變量 2. <path id="project.class.path"> <pathelement location="lib/"/> <pathelement path="${java.class.path}/"/> <pathelement path="${additional.path}"/> </path> <target ... > <rmic ...> <classpath refid="project.class.path"/> </rmic> </target> 4.3 打包相關(guān)
4.3.1 jar 將一組文件打包 例子: 1. <jar destfile="${dist}/lib/app.jar" basedir="${build}/classes"/> 將${build}/classes下面的所有文件打包到${dist}/lib/app.jar中 2. <jar destfile="${dist}/lib/app.jar" basedir="${build}/classes" includes="mypackage/test/**" excludes="**/Test.class" /> 將${build}/classes下面的所有文件打包到${dist}/lib/app.jar中,但是包括mypackage/test/所有文件不包括所有的Test.class 3. <jar destfile="${dist}/lib/app.jar" basedir="${build}/classes" includes="mypackage/test/**" excludes="**/Test.class" manifest=”my.mf” /> manifest屬性指定自己的META-INF/MANIFEST.MF文件,而不是由系統(tǒng)生成 4.3.2 war 對Jar的擴(kuò)展,用于打包Web應(yīng)用 例子: 假設(shè)我們的文件目錄如下: thirdparty/libs/jdbc1.jar thirdparty/libs/jdbc2.jar build/main/com/myco/myapp/Servlet.class src/metadata/myapp.xml src/html/myapp/index.html src/jsp/myapp/front.jsp src/graphics/images/gifs/small/logo.gif src/graphics/images/gifs/large/logo.gif 下面是我們的任務(wù)的內(nèi)容: <war destfile="myapp.war" webxml="src/metadata/myapp.xml"> <fileset dir="src/html/myapp"/> <fileset dir="src/jsp/myapp"/> <lib dir="thirdparty/libs"> <exclude name="jdbc1.jar"/> </lib> <classes dir="build/main"/> <zipfileset dir="src/graphics/images/gifs" prefix="images"/> </war> 完成后的結(jié)果: WEB-INF/web.xml WEB-INF/lib/jdbc2.jar WEB-INF/classes/com/myco/myapp/Servlet.class META-INF/MANIFEST.MF index.html front.jsp images/small/logo.gif images/large/logo.gif 4.3.3 ear 用于打包企業(yè)應(yīng)用 例子 <ear destfile="${build.dir}/myapp.ear" appxml="${src.dir}/metadata/application.xml"> <fileset dir="${build.dir}" includes="*.jar,*.war"/> </ear> 4.4 時間戳
在生成環(huán)境中使用當(dāng)前時間和日期,以某種方式標(biāo)記某個生成任務(wù)的輸出,以便記錄它是何時生成的,這經(jīng)常是可取的。這可能涉及編輯一個文件,以便插入一個字符串來指定日期和時間,或?qū)⑦@個信息合并到 JAR 或 zip 文件的文件名中。 這種需要是通過簡單但是非常有用的 tstamp 任務(wù)來解決的。這個任務(wù)通常在某次生成過程開始時調(diào)用,比如在一個 init 目標(biāo)中。這個任務(wù)不需要屬性,許多情況下只需 <tstamp/> 就足夠了。 tstamp 不產(chǎn)生任何輸出;相反,它根據(jù)當(dāng)前系統(tǒng)時間和日期設(shè)置 Ant 屬性。下面是 tstamp 設(shè)置的一些屬性、對每個屬性的說明,以及這些屬性可被設(shè)置到的值的例子: 屬性 說明 例子 DSTAMP 設(shè)置為當(dāng)前日期,默認(rèn)格式為yyyymmdd 20031217 TSTAMP 設(shè)置為當(dāng)前時間,默認(rèn)格式為 hhmm 1603 TODAY 設(shè)置為當(dāng)前日期,帶完整的月份 2003 年 12 月 17 日 例如,在前一小節(jié)中,我們按如下方式創(chuàng)建了一個 JAR 文件: <jar destfile="package.jar" basedir="classes"/> 在調(diào)用 tstamp 任務(wù)之后,我們能夠根據(jù)日期命名該 JAR 文件,如下所示: <jar destfile="package-${DSTAMP}.jar" basedir="classes"/> 因此,如果這個任務(wù)在 2003 年 12 月 17 日調(diào)用,該 JAR 文件將被命名為 package-20031217.jar。 還可以配置 tstamp 任務(wù)來設(shè)置不同的屬性,應(yīng)用一個當(dāng)前時間之前或之后的時間偏移,或以不同的方式格式化該字符串。所有這些都是使用一個嵌套的 format 元素來完成的,如下所示: <tstamp> <format property="OFFSET_TIME" pattern="HH:mm:ss" offset="10" unit="minute"/> </tstamp> 上面的清單將 OFFSET_TIME 屬性設(shè)置為距離當(dāng)前時間 10 分鐘之后的小時數(shù)、分鐘數(shù)和秒數(shù)。 用于定義格式字符串的字符與 java.text.SimpleDateFormat 類所定義的那些格式字符相同 4.5 執(zhí)行SQL語句 通過jdbc執(zhí)行SQL語句 例子: 1. <sql driver="org.gjt.mm.mysql.Driver" url="jdbc:mysql://localhost:3306/mydb" userid="root" password="root" src="data.sql" /> 2. <sql driver="org.database.jdbcDriver" url="jdbc:database-url" userid="sa" password="pass" src="data.sql" rdbms="oracle" version="8.1." > </sql> 只有在oracle、版本是8.1的時候才執(zhí)行 4.6 發(fā)送郵件 使用SMTP服務(wù)器發(fā)送郵件 例子: <mail mailhost="smtp.myisp.com" mailport="1025" subject="Test build"> <from address="me@myisp.com"/> <to address="all@xyz.com"/> <message>The ${buildname} nightly build has completed</message> <fileset dir="dist"> <includes name="**/*.zip"/> </fileset> </mail> mailhost: SMTP服務(wù)器地址 mailport: 服務(wù)器端口 subject: 主題 from: 發(fā)送人地址 to: 接受人地址 message: 發(fā)送的消息 fileset: 設(shè)置附件 |
|