现在的位置: 首页 > 综合 > 正文

Ant build.xml文件说明

2012年01月07日 ⁄ 综合 ⁄ 共 6242字 ⁄ 字号 评论关闭

4 Ant的Core Tasks

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">

<include name="**Test.java"/>

</fileset>

</copy>

 
<copy todir="../dest/dir">

<fileset dir="src_dir" excludes="***.bak"/>

</delete>

4.1.3 删除指定目录及其子目录,包括他自己

<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="**ant.jar"/>

</fileset>

</move>

5.移动文件过程中增加。Bak后缀

<move todir="my/src/dir">

<fileset dir="my/src/dir">

<exclude name="**Test.class" />

将{build}/classes下面的所有文件打包到{dist}/lib/app.jar中,但是包括mypackage/test/所有文件不包括所有的Test.class

3.<jar destfile="{dist}/lib/app.jar"

basedir="{build}/classes"

includes="mypackage/testTest.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 文件的文件名中。

属性说明例子

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:设置附件

 

具体的例子:

<?xml version="1.0" encoding="utf-8"?>
<project name="autotest1" default="sendmail" basedir=".">

 <!--配置基本属性-->
 <property name="src" value="src" />
 <property name="build" value="build" />
 <property name="lib" value="lib" />
 <property name="dist" value="dist" />
 <property name="classpath" location="${build}" />

 <!--配置测试报告的属性-->
 <property name="report" value="report" />
 <property name="report.xml" value="${report}/junit/xml" />
 <property name="report.html" value="${report}/junit/html" />

 <!--配置运行时classpath-->
 <path id="classpath.run">
  <pathelement path="${classpath}" />
  <fileset dir="${lib}">
   <include name="*.jar" />
  </fileset>
 </path>

 <!--配置测试时classpath-->
 <path id="classpath.test">
  <path refid="classpath.run" />
  <path location="${dist}/lib/test-${DSTAMP}.jar" />
 </path>

 <!--任务初始化-->
 <target name="init">
  <tstamp />
  <delete dir="${build}" />
  <delete dir="${report}" />
  <delete dir="${dist}" />
  <mkdir dir="${build}" />
 </target>

 <!--配置编译任务-->
 <target name="compile" depends="init">
  <javac srcdir="${src}" destdir="${build}" includeantruntime="on" encoding="utf-8" >
   <classpath refid="classpath.run" />
  </javac>
 </target>

 

 <!--配置运行任务-->
 <target name="run" depends="compile">
  <java classname="com.newcosoft.cmwh">
   <classpath>
    <path refid="classpath.run" />
   </classpath>
  </java>
 </target>

 <!--配置JUnit测试,打印测试结果-->
 <target name="report" depends="compile">
  <mkdir dir="${report.xml}" />
  <mkdir dir="${report.html}" />
  <junit printsummary="yes" haltonfailure="no">
   <classpath refid="classpath.run" />
   <formatter type="xml" />
   <batchtest fork="yes" todir="${report.xml}">
    <fileset dir="${src}" includes="**/*.java" />
   </batchtest>
  </junit>
  <junitreport todir="${report.html}">
   <fileset dir="${report.xml}">
    <include name="*.xml" />
   </fileset>
   <report format="frames" todir="${report.html}" />
  </junitreport>
 </target>
 
 <!--将生成的测试报告打成zip包 -->
 <target name="mkzip" depends="report">
     <tstamp>
         <format property="DSTAMP" pattern="yyyyMMdd"/>
     </tstamp>
     <zip destfile="${report}/Testreport_${DSTAMP}.zip" basedir="${report}" excludes="*"></zip>
 </target>

 
 <!--将测试报告 打包,移动目录-->
 <target name="move" depends="mkzip" >
  <copy todir="E:\\SeleniumTestReport">
   <fileset dir="${report}">
    <include name="**/*.zip"/>
   </fileset>
  </copy>
 </target>
 
 <!--把测试报告附在邮件中发送出去-->
 <target name="sendmail" description="testReport" depends="move">
   <mail mailhost="mail.newcosoft.com" mailport="25" charset="utf-8" subject="Selenium Test Report" user="tester@soft.com" password="passwd">  

      <from address="tester@soft.com" name="tester" />     

      <to address="tyf@soft.com" name="tyf" />  

      <message>附件为自动化测试报告,如有问题,尽快与测试组联系! </message>  
         <attachments>
    <fileset dir="${report}">  
     <include name="Testreport_${DSTAMP}.zip" />  
    </fileset>
   </attachments>
   </mail>

 </target>
 

</project>

 

抱歉!评论已关闭.