ANT自动化构建Java工程例子(build.xml)

/*************************执行JAVA入口*****************************/
<?xml version="1.0" encoding="UTF-8"?>
<!-- 定义生成文件的project根元素,默认的target为空 -->
<project name="atfw" basedir="." default="" >
<!-- 自定义三属性 -->
<property environment="env"/> 
<property name="ant.home" value="${env.ANT_HOME}"/> 
<property name="src" value="src"/>
<property name="classes" value="classes"/>
<property name="dest" value="dest"/>
<!-- 定义一组文件个目录集 -->
<path id="classpath">
<fileset dir="lib">
<include name="*.jar"/>
</fileset>
</path>
<!-- 定义 help target,用于输出该生成文件的帮助信息 -->
<target name="help" description="打印帮助信息">
<echo>help - 打印帮助信息</echo>
<echo>compile - 编译java源文件</echo>
<echo>run - 运行程序</echo>
<echo>build - 打包JAR包</echo>
<echo>clean - 清除所有编译生成文件</echo>
</target>
<!-- 定义 compile target,用于编译 Java源文件-->
<target name="compile" description="编译JAVA源文件">
<!-- 先删除 classes 属性所代表的文件夹 -->
<delete dir="${classes}"/>
<!-- 创建 classes 属性所代表的文件夹 -->
<mkdir dir="classes"/>
<!-- 编译Java文件,编译后的class文件放到classes属性所代表的文件夹内 -->
<javac destdir="${classes}" debug="true" deprecation="false" optimize="false" failonerror="true" encoding="UTF-8">
<!-- 指定需要编译的Java文件所在位置 -->
<src path="${src}"/>
<!-- 指定编译Java文件所需要的第三方类库所在位置 -->
<classpath refid="classpath"/> 
</javac>
</target>
<!-- 定义 run target,用于运行Java源文件,运行该target之前回先运行 compile target -->
<target name="run" description="运行程序" depends="compile">
<!-- 运行 StartupAutoTest类,其中fork指定启动另一个JVM 来执行 Java 命令-->
<java classname="UserTest" fork="yes" failonerror="true">
<classpath refid="classpath"/>
<!-- 运行Java程序时传入2个参数 -->
<arg line="测试参数1 测试参数2"/>
</java>
</target>
<!-- 定义 build target,用于打包JAR文件,运行该target之前回先运行 compile target -->
<target name="build" description="打包JAR文件" depends="compile">
<!-- 先删除 dest 属性所代表的文件夹 -->
<delete dir="${dest}"/>
<!-- 创建 dest所代表的文件夹 -->
<mkdir dir="dest"/>
<!-- 指定将classes属性所代表的文件夹下的所有*.classes 文件都打包到app.jar文件中 -->
<jar destfile="${dest}/app.jar" basedir="${classes}" includes="**/*.class">
<!-- 为JAR包得清单文件添加属性 
<manifest>
<attribute name="Main-Class" value="StartupAutoTest"/>
</manifest>
-->
</jar>
</target> 
<!-- 定义 clean target,用于删除所有编译生成的文件 -->
<target name="clean" description="清除所有编译生成文件">
<!-- 删除两个目录,目录下的文件已一并删除 -->
<delete dir="${classes}"/>
<delete dir="${dest}"/>
</target>
</project>

/********************** 通过ANT启动Junit测试用例******************************/

<?xml version="1.0" encoding="UTF-8"?>
<!-- 定义生成文件的project根元素,默认的target为空 -->
<project name="atfw" basedir="." default="" >
<!-- 自定义三属性 -->
<property name="src" value="src"/>
<property name="classes" value="classes"/>
<property name="dest" value="dest"/>
<property name="data" location="${dest}/data"/>
<!-- 定义一组编译期类路径 -->
<path id="classpath">
<fileset dir="lib">
<include name="*.jar"/>
</fileset>
</path>
<!-- 定义一组执行期类路径 -->
<path id="runClasspath">
<path refid="classpath"/>
<pathelement location="${dest}\app.jar"/> 
</path>
<!-- 定义 help target,用于输出该生成文件的帮助信息 -->
<target name="help" description="打印帮助信息">
<echo>help - 打印帮助信息</echo>
<echo>compile - 编译java源文件</echo>
<echo>run - 运行程序</echo>
<echo>build - 打包JAR包</echo>
<echo>clean - 清除所有编译生成文件</echo>
</target>

<!-- 定义 compile target,用于编译 Java源文件-->
<target name="compile" description="编译JAVA源文件" >
<!-- 删除目录-->
<delete dir="${classes}"/>
<!--创建目录-->
<mkdir dir="${classes}"/>
<mkdir dir="${data}"/>
<!-- 编译Java文件,编译后的class文件放到classes属性所代表的文件夹内 -->
<javac destdir="${classes}" debug="true" deprecation="false" optimize="false" failonerror="true" encoding="UTF-8">
<!-- 指定需要编译的Java文件所在位置 -->
<src path="${src}"/>
<!-- 指定编译Java文件所需要的第三方类库所在位置 -->
<classpath refid="classpath"/> 
</javac>
</target>
<!-- 定义 run target,用于运行Java源文件,运行该target之前回先运行 build target -->
<target name="run" description="运行程序" depends="build">
<!-- 通过Junit运行 StartupAutoTest类,其中fork指定启动另一个JVM 来执行 Java 命令-->
<junit printsummary="false" haltonfailure="false" fork="true">
<!--指定运行期一组类路径-->
<classpath refid="runClasspath" />
<!--定义系统性质 -->
<formatter type="brief" usefile="false"/>
<formatter type="xml"/>
<batchtest todir="${data}">
<fileset dir="${classes}" >
<include name="**/ServiceImplTest.*"/>
</fileset>
</batchtest>
</junit>
</target>
<!-- 定义 build target,用于打包JAR文件,运行该target之前回先运行 compile target -->
<target name="build" description="打包JAR文件" depends="compile">
<!-- 先删除 dest 属性所代表的文件夹 -->
<delete dir="${dest}"/>
<!-- 创建 dest所代表的文件夹 -->
<mkdir dir="dest"/>
<mkdir dir="${data}"/>
<!-- 指定将classes属性所代表的文件夹下的所有*.classes 文件都打包到app.jar文件中 -->
<jar destfile="${dest}/app.jar" basedir="${classes}" includes="**/*.class">
<!-- 为JAR包得清单文件添加属性 -->
<manifest>
<attribute name="Main-Class" value="StartupAutoTest"/>
</manifest>

</jar>
</target> 

<!-- 定义 clean target,用于删除所有编译生成的文件 -->
<target name="clean" description="清除所有编译生成文件">
<!-- 删除两个目录,目录下的文件已一并删除 -->
<delete dir="${classes}"/>
<delete dir="${dest}"/>
</target>
</project>
posted @ 2012-06-14 18:11  单行线  阅读(363)  评论(0编辑  收藏  举报