您的位置:首页 > 编程语言

使用 ant 让你愉快编程(2)

2004-10-21 15:12 295 查看
[align=right][首页, 上一页, 下一页][/align]

2  通用配置

摘要: 介绍 build_common.xml, common.xml 及 usage.txt

build_common.xml
  <?xml version="1.0" encoding="ISO-8859-1"?>
  <!-
   Copyright 2004 camry.wu@gmail.com
  
   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 2 of the License, or
   (at your option) any later version.
  
   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
   GNU General Public License for more details.
  
   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  ->
  <project name="Common build file" default="all" basedir="">
  
   <description>
   这是一个通用的 ant build 文件. Version 1.0.
   感谢: 这篇文档借用了很多 Johan 的想法, 他的主页在 http://dev.kanngard.net
   Copyright 2004 camry.wu@gmail.com
   </description>
  
   <!- 读入 common.xml 配置 ->
   <xmlproperty file="${path.common}/common.xml"
   semanticAttributes="true"
   keepRoot="false"/>
  
   <!- 设置编译时的 classpath ->
   <path id="compile.classpath">
   <fileset dir="${path.common}/lib">
   <include name="*.jar"/>
   </fileset>
   <fileset dir="${lib}">
   <include name="*.jar"/>
   </fileset>
   <pathelement location="${dist.classes}"/>
   </path>
  
   <!- 设置运行时的 classpath ->
   <path id="run-time.classpath">
   <path refid="compile.classpath"/>
   </path>
  
   <!- 初始化过程, 会调用具体项目的初始化过程先 ->
   <target name="init"
   depends="project_init"
   description="Initialize environment">
   </target>
  
   <!- 显示使用说明 ->
   <target name="usage">
   <loadfile property="usage.message"
   srcFile="${path.common}/usage.txt"/>
   <echo message="${usage.message}"/>
   </target>
  
   <!- 预备, 通常在项目刚建立的时候运行此任务 ->
   <target name="common_prepare"
   depends="init" description="Prepare build directory">
   <copy todir="." preservelastmodified="true">
   <fileset dir="${path.common}/template/">
   <include name="**/*"/>
   </fileset>
   </copy>
   </target>
  
   <!- 配置 checkstyle , 只检查 src/main 目录下的源代码 ->
   <target name="checkstyle" depends="init">
   <taskdef resource="checkstyletask.properties"
   classpath="${path.common}/lib/checkstyle-all-3.4.jar"/>
   <checkstyle config="${build}/checkstyle_checks.xml">
   <fileset dir="${src.main}" includes="**/*.java"/>
   <property key="checkstyle.cache.file"
   file="${path.common}/lib/checkstyle.cache"/>
   <classpath refid="compile.classpath"/>
   </checkstyle>
   </target>
  
   <!- 编译 src 下源文件, class 文件放到 dist/classes 下 ->
   <target name="compile" depends="init" description="Compile source">
   <mkdir dir="${dist}/classes"/>
   <javac debug="${compile.debug}"
   deprecation="${compile.deprecation}"
   destdir="${dist}/classes"
   target="${compile.jdk-version.target}"
   source="${compile.jdk-version.source}"
   optimize="${compile.optimize}"
   srcdir="${src}">
   <classpath refid="compile.classpath"/>
   </javac>
   </target>
  
   <!- 清除 dist 目录 ->
   <target name="clean"
   depends="project_clean"
   description="Wipeout all generated files">
   <delete dir="${dist}/classes"/>
   <delete dir="${dist.lib}"/>
   <mkdir dir="${dist}/classes"/>
   <mkdir dir="${dist.lib}"/>
   </target>
  
   <!- 打包 ->
   <target name="jar"
   depends="checkstyle, compile"
   description="Create binary distribution">
   <mkdir dir="${dist}/classes"/>
   <mkdir dir="${dist.lib}"/>
   <copy file="LICENSE" todir="${dist}/classes"/>
   <delete>
   <fileset dir="${dist.lib}" includes="*.jar"/>
   </delete>
   <jar basedir="${dist}/classes"
   jarfile="${dist.lib}/${component.name}-${component.version}.jar">
   <include name="**/*.class"/>
   <exclude name="**/Test*.class"/>
   </jar>
  
   <delete>
   <fileset dir="${dist}/classes">
   <include name="LICENSE"/>
   </fileset>
   </delete>
   </target>
  
   <!-
   运行 dist/classes 目录下的所有以 Test 开头的测试类
   注意, 在 ant 的 lib 目录下要包含 junit.jar.
   ->
   <target name="test" depends="compile" description="run junit tests">
   <junit printsummary="on"
   fork="false"
   haltonfailure="false"
   failureproperty="tests.failed"
   showoutput="true">
   <classpath refid="run-time.classpath"/>
   <formatter type="brief" usefile="false"/>
   <batchtest>
   <fileset dir="${dist}/classes">
   <include name="**/Test*.*"/>
   </fileset>
   </batchtest>
   </junit>
  
   <fail if="tests.failed">
   *********************************************************
   *********************************************************
   **** One or more tests failed! Check the output... ****
   *********************************************************
   *********************************************************
   </fail>
   </target>
  
   <!- 发布, 会调用具体项目的发布任务 ->
   <target name="deploy"
   depends="project_deploy" description="Deploy application"/>
  
   <!- 创建文档 ->
   <target name="javadoc"
   depends="compile"
   description="Create component Javadoc documentation">
   <delete dir="${docs.api}"/>
   <mkdir dir="${docs.api}"/>
   <javadoc author="true"
   bottom="${component.title}"
   destdir="${docs.api}"
   source="${compile.jdk-version.source}"
   doctitle="${component.title}"
   packagenames="*"
   access="protected"
   sourcepath="${src.main}"
   version="true"
   windowtitle="${component.title} (Version ${component.version})">
   <classpath refid="compile.classpath"/>
   </javadoc>
   </target>
  
   <!- 根据 cvs 配置, 从 cvs 服务器上下载源代码 ->
   <target name="fetch"
   depends="project_fetch" description="fetch current source from cvs">
   </target>
  
   <!- 将源代码文件打包, 备份 ->
   <target name="src-zip"
   depends="checkstyle,compile"
   description="Creates source distribution">
   <copy file="LICENSE" todir="${src.main}"/>
   <delete>
   <fileset dir="${dist.lib}" includes="*-src.zip"/>
   </delete>
   <zip basedir="."
   destfile="${dist.lib}/${component.name}-${component.version}-src.zip"
   whenempty="fail">
   <include name="**/*.*"/>
   <include name="*"/>
   <include name="**/*"/>
   <exclude name="${dist}/**/*.*"/>
   <exclude name="*.* "/> <!- vi(JEdit) backups ->
   <exclude name=".nbattrs"/> <!- Netbeans filesystem attributes ->
   <exclude name="*.old"/>
   </zip>
   </target>
  
   <!-
   将源文件上传到服务器备份, 将目标文件上传到服务器发布.
   此任务中内容由各位自行设定, 一般是运行 ftp 任务.
   ->
   <target name="publish"
   depends="clean,jar,javadoc,src-zip" description="publish project">
   </target>
  
   <!- 构建 ->
   <target name="all"
   depends="clean,fetch,test,jar,javadoc,deploy"
   description="build project"/>
  </project>


common.xml
  <?xml version="1.0" encoding="ISO-8859-1"?>
  <!-
   Copyright 2004 camry.wu@gmail.com
   Common Ant build environment
  ->
  
  <root>
   <!-
   路径配置, 基本不用改动.
   但是假如你在一个陌生的环境中使用这套 build 工具,
   也许需要稍为修改一下这些路径的配置.
   ->
   <bin value="bin"/>
   <build value="build">
   <lib value="${build}/lib"/>
   </build>
   <dist value="dist">
   <lib value="${dist}/lib"/>
   <classes id="dist.classes" location="${dist}/classes"/>
   </dist>
   <docs value="docs">
   <api value="${docs}/api"/>
   </docs>
   <lib value="lib"/>
   <src value="src">
   <main value="${src}/main"/>
   <test value="${src}/test"/>
   </src>
  
   <!- 编译选项 ->
   <compile>
   <debug value="true"/>
   <deprecation value="true"/>
   <jdk-version>
   <source value="1.4"/>
   <target value="1.4"/>
   </jdk-version>
   <optimize value="true"/>
   </compile>
  
  </root>


usage.txt
  ${component.name} build file
   -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  
  Available targets are:
  
  prepare -> 初始化项目环境
  checkstyle -> 检查源文件编码规范
  compile -> 编译
  jar -> 打包
  build -> 构建
  test -> 测试
  clean -> 清除
  deploy -> 发布到 web 服务器运行
  publish -> 发布产品(源码及目标文件)
  fetch -> 从 cvs 上获取最新资源
  docs -> 创建 api 文档
  all -> 执行 clean, fetch, build, test, doc, deploy
  main -> 默认的构建过程(自行修改)


[align=right][首页, 上一页, 下一页][/align]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息