ant构建2
其它人配置
<?xml version="1.0" ?> <!-- 默认任务 default 可以指定直接执行ant 命令的时候默认的任务可以通过指定任务 名称(target name)运行不同的任务 比如: ant package --> <project name="tax-calculator" default="package"> <!-- 设置property 可以在其他地方通过${xxx} 的方式引用 也可以通过 property file设 置具体的properties文件 这里有个优先级 的问题 首先你可以在执行ant命令 这个优 先级是最大的 其次的是properties 文件 中的属性 最后的优先级是写在build.xml 中的property(很怪) --> <property name="project.name" value="exampleant" /> <property name="project.version" value="snapshot" /> <property name="base.dir" value="." /> <property name="dist.dir" value="${base.dir}/dist" /> <property name="testlog.dir" value="${base.dir}/testlog" /> <property name="testlog.html.dir" value="${testlog.dir}/html" /> <property name="source.dir" value="${base.dir}/src" /> <property name="build.dir" value="${base.dir}/build" /> <property name="source.main.dir" value="${source.dir}/main" /> <property name="source.test.dir" value="${source.dir}/test" /> <property name="build.classes.dir" value="${build.dir}/classes" /> <property name="build.test.classes.dir" value="${build.dir}/test-classes" /> <property name="lib.dir" value="${base.dir}/lib" /> <!-- 输出当前环境的信息 --> <target name="display-properties"> <echoproperties /> </target> <!-- 设置类路径 --> <path id="compile.classpath"> <fileset dir="${lib.dir}" includes="*.jar" /> <pathelement path="${build.classes.dir}" /> </path> <path id="test.compile.classpath"> <path refid="compile.classpath" /> <pathelement path="${build.test.classes.dir}" /> </path> <!-- target 任务 name:任务名称 depends:前置任务(强调该任务执行前必须执行depends指定的任务) description:描述 --> <!-- mkdir dir:目录信息 --> <target name="init"> <mkdir dir="${build.classes.dir}" /> <mkdir dir="${build.test.classes.dir}" /> <mkdir dir="${dist.dir}" /> <mkdir dir="${testlog.html.dir}"/> </target> <!-- javac 编译Java源文件 srcdir:源文件目录 destdir:输出目录 includes:告诉Ant编译过程中编译哪些位置的源文件(其他位置被忽视) excludes:告诉Ant编译过程中忽略那些位置的源文件 debug:是否开启调试信息 source:强调开发源代码的JDK版本 target:强调编译后的Class文件应该支持的JDK版本 compiler:指定编译器(不一定非得使用Sun的标准编译器进行编译) --> <target name="compile" depends="init" description="Compile Java code"> <javac srcdir="${source.main.dir}/resources" destdir="${build.classes.dir}" source="1.6" target="1.6" debug="true" includes="com.javapowertools.taxcalculator.**" /> <javac srcdir="${source.main.dir}/java" destdir="${build.classes.dir}" /> </target> <target name="compile-test" depends="compile" description="Compile Unit Tests"> <javac srcdir="${source.test.dir}/resources" classpathref="test.compile.classpath" destdir="${build.test.classes.dir}" /> <javac srcdir="${source.test.dir}/java" classpathref="test.compile.classpath" destdir="${build.test.classes.dir}" /> </target> <!-- jar 打包Java文件 destfile:指定输出文件 basedir:类文件所在位置 --> <target name="package" depends="compile,test,test-report" description="Create Jar file"> <jar destfile="${dist.dir}/${project.name}-${project.version}.jar" basedir="${build.classes.dir}" /> </target> <!-- junit 单元测试 printsummary:是否显示单元测试类列表,如果是否的话Ant将运行测试但不显示测试结果,除非有单元测试失败 haltonfailure:是否测试失败就停止构建,默认为否,也就是即使测试失败也继续构建 fork:是否重新启用一个JVM进程进行测试(默认为false 正常情况下重新启用一个JVM进程进行测试会有意想不到的效果) assertions 指定断言机制 enable 该属性为所有非系统类激活断言 package:指定某一个包下的类激活断言 class:指定具体某一个类激活断言 test 指定单元测试的类 name:类名 batchtest 批量测试 todir:指定日志输出目录 fileset 文件信息 dir:所在目录 includes:包含的测试类 formatter 指定详细信息输出格式 type:有三种格式 brief只提供失败测试的详细信息 plain提供了通过的和失败的测试数量,并列出实际成功的测试 xml则用于生成报告 usefile:是否创建文件,默认为true --> <target name="test" depends="compile-test" description="Run unit tests"> <junit printsummary="true" haltonfailure="false" fork="false" failureproperty="test.failures"> <assertions> <enable/> </assertions> <classpath refid="test.compile.classpath" /> <formatter type="xml" usefile="true" /> <!-- <test name="com.javapowertools.taxcalculator.TaxRateTest" /> --> <batchtest todir="${testlog.dir}"> <fileset dir="${build.test.classes.dir}" includes="**/*Test.class" /> </batchtest> </junit> </target> <!-- 关于生成测试报告的建议 如果开发人员选择了生成测试报告 也就表示不能在测试出现问题的时候简单的停止构建(这样会影响报告的完整性) 但是将haltonfailure属性设置为true并不是好的解决方式,另一方面,如果测试失败就停止构建是个好主意, 事实上持续构建系统是依赖这一点的 解决方式参考Java开发超级工具集中文版50页 --> <!-- junitreport 生成报告(通过打包在ant-junit.jar内的xsl样式表来生成 有必要的话可以自行更改) todir:源文件(XML)目录 report HTML生成模板信息定义 format:指定是否使用Frame 有noframes和frames两种 todir:指定HTML文件输出位置 styledir:可以自己指定HTML使用的样式 --> <target name="test-report" depends="test" description="Generate HTML unit test reports"> <junitreport todir="${testlog.dir}"> <fileset dir="${testlog.dir}"> <include name="TEST-*.xml"/> </fileset> <report format="frames" todir="${testlog.html.dir}"/> </junitreport> <fail if="test.failures" message="There were test failures."/> </target> <target name="clean" description="Deletes generated dire ctories"> <delete dir="${build.dir}" /> <delete dir="${dist.dir}" /> <delete dir="${testlog.dir}" /> </target> </project>