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

原创 2004年10月21日 15:12:00

2  通用配置

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

  1. 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>
    

  2. 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>
    

  3. 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                -> 默认的构建过程(自行修改)
    

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

[首页, 上一页, 下一页]3  项目个性化配置摘要: 介绍 build.xml, build.properties这两个文件是每个项目都需要的, 具体说明了每个项目的一些个性化的配置.build.x...
  • camry_camry
  • camry_camry
  • 2004年10月21日 15:15
  • 3835

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

[首页, 上一页, 下一页]5  与 tomcat 合作摘要: 介绍 build_tomcat.xml, tomcat.xml现在介绍一下如何与 tomcat 一起合作.java 的程序很大部分都涉及...
  • camry_camry
  • camry_camry
  • 2004年10月21日 15:16
  • 4176

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

[首页, 上一页, 下一页]6  与 cvs 合作摘要: 简要介绍如何与 cvs 一起合作.很多人用 cvs 作为版本控制工具, 但是它有一点点麻烦, 就是 commit 的时候没有 -r 选项, 不...
  • camry_camry
  • camry_camry
  • 2004年10月21日 17:25
  • 3608

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

[首页, 上一页, 下一页] 使用 ant 让你愉快编程已经有无数的文章介绍过 ant 了, 我就不再介绍 ant 的安装,配置了. 每个使用 ant 的朋友都有一套自己的组织方式, 现在我把我的方式...
  • camry_camry
  • camry_camry
  • 2004年10月21日 14:45
  • 9491

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

[首页, 上一页, 下一页]4  与 checkstyle 合作摘要: 介绍 checkstyle_checks.xml, java.header现在已经有了目录结构, 有了 build_common...
  • camry_camry
  • camry_camry
  • 2004年10月21日 15:16
  • 3777

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

[首页, 上一页, 下一页]7  如何使用这个环境?摘要: 介绍如何使用这个 ant 环境.现在已经有了整个 ant 环境, 放在 work/common/ 目录下, 配置文件也都齐全了, 可以开始进...
  • camry_camry
  • camry_camry
  • 2004年10月21日 17:29
  • 4056

使用 ant 让你愉快编程

使用 ant 让你愉快编程(1)摘要: 目录结构划分已经有无数的文章介绍过 ant 了, 我就不再介绍 ant 的安装,配置了.每个使用 ant 的朋友都有一套自己的组织方式, 现在我把我的方式写出来...
  • godding
  • godding
  • 2004年10月23日 15:23
  • 852

用 ant 让你愉快编程

目录结构:work/common/    | -- build_common.xml        #  这个文件包含基本的构建操作    | -- common.xml               ...
  • alexjjf
  • alexjjf
  • 2005年08月01日 18:39
  • 789

使用对Ant编程来实现简单文件的打包

使用对Ant编程来实现简单文件的打包kongxxAnt是我们熟悉的Java构建工具,通常我们使用Ant是通过build.xml文件来实现任务的调用,其实不仅如此,我们还也可以通过编程的方式来实现任务调...
  • kongxx
  • kongxx
  • 2005年06月10日 22:18
  • 3117

ant build.xml 配置详解

在有eclipse集成环境下ant其实不是很重要,但有些项目需要用到,另外通过eclipse来学习和理解ant是个很好的途径,所以写他demo总结下要点,希望能够帮到大家。 一、本人测试环境eclip...
  • lipingaccp
  • lipingaccp
  • 2014年12月23日 10:03
  • 3158
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用 ant 让你愉快编程(2)
举报原因:
原因补充:

(最多只允许输入30个字)