4.1 File(Directory)类
4.1.1 Mkdir 创建一个目录,如果他的父目录不存在,也会被同时创建。 例子: <mkdir dir="build/classes"/> 说明: 如果build不存在,也会被同时创建 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. 拷贝一组文件到指定目录下,替换其中的@标签@内容 <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相关
4.2.1 Javac 编译java原代码 例子 1. <javac srcdir="${src}" destdir="${build}" classpath="xyz.jar" debug="on" /> 编译${src}目录及其子目录下的所有。Java文件,。Class文件将放在${build}指定的目录下,classpath表示需要用到的类文件或者目录,debug设置为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设置为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 执行指定的java类 例子: 1. <java classname="test.Main"> <classpath> <pathelement location="dist/test.jar"/> <pathelement path="${java.class.path}"/> </classpath> </java> classname中指定要执行的类,classpath设定要使用的环境变量 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 打包相关
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文件,而不是由系统生成 4.3.2 war 对Jar的扩展,用于打包Web应用 例子: 假设我们的文件目录如下: 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 下面是我们的任务的内容: <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> 完成后的结果: 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 用于打包企业应用 例子 <ear destfile="${build.dir}/myapp.ear" appxml="${src.dir}/metadata/application.xml"> <fileset dir="${build.dir}" includes="*.jar,*.war"/> </ear> 4.4 时间戳
在生成环境中使用当前时间和日期,以某种方式标记某个生成任务的输出,以便记录它是何时生成的,这经常是可取的。这可能涉及编辑一个文件,以便插入一个字符串来指定日期和时间,或将这个信息合并到 JAR 或 zip 文件的文件名中。 这种需要是通过简单但是非常有用的 tstamp 任务来解决的。这个任务通常在某次生成过程开始时调用,比如在一个 init 目标中。这个任务不需要属性,许多情况下只需 <tstamp/> 就足够了。 tstamp 不产生任何输出;相反,它根据当前系统时间和日期设置 Ant 属性。下面是 tstamp 设置的一些属性、对每个属性的说明,以及这些属性可被设置到的值的例子: 属性 说明 例子 DSTAMP 设置为当前日期,默认格式为yyyymmdd 20031217 TSTAMP 设置为当前时间,默认格式为 hhmm 1603 TODAY 设置为当前日期,带完整的月份 2003 年 12 月 17 日 例如,在前一小节中,我们按如下方式创建了一个 JAR 文件: <jar destfile="package.jar" basedir="classes"/> 在调用 tstamp 任务之后,我们能够根据日期命名该 JAR 文件,如下所示: <jar destfile="package-${DSTAMP}.jar" basedir="classes"/> 因此,如果这个任务在 2003 年 12 月 17 日调用,该 JAR 文件将被命名为 package-20031217.jar。 还可以配置 tstamp 任务来设置不同的属性,应用一个当前时间之前或之后的时间偏移,或以不同的方式格式化该字符串。所有这些都是使用一个嵌套的 format 元素来完成的,如下所示: <tstamp> <format property="OFFSET_TIME" pattern="HH:mm:ss" offset="10" unit="minute"/> </tstamp> 上面的清单将 OFFSET_TIME 属性设置为距离当前时间 10 分钟之后的小时数、分钟数和秒数。 用于定义格式字符串的字符与 java.text.SimpleDateFormat 类所定义的那些格式字符相同 4.5 执行SQL语句 通过jdbc执行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的时候才执行 4.6 发送邮件 使用SMTP服务器发送邮件 例子: <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服务器地址 mailport: 服务器端口 subject: 主题 from: 发送人地址 to: 接受人地址 message: 发送的消息 fileset: 设置附件 |
|