zoukankan      html  css  js  c++  java
  • Eclipse 使用ApacheAnt 小记

    现在时不时来学习一下,感觉java的盘子太大,要想搞得明白、透彻、得心应手还真不是一件容易的事。

    上周五去清华科技园的Google培训了一下,感觉还是不错,后来又正值自己休09年的几天年假,就在家没事瞎折腾了一翻。下面是自己对ant的一个小小的应用,供自己学习,如惹发现问题,恳请指正,谢谢! 

    build.xml完整代码
     1 <project name="AntCase" default="doc">
     2 
     3     <!-- 相关属性的定义 -->
     4     <property name="src.dir" value="src" description="java源文件" />
     5     <property name="report.dir" value="report" />
     6     <property name="classes.dir" value="classes" description="编译java源文件后的class文件" />
     7     <property name="lib.dir" value="lib" description="存放编译和运行用到的所有jar文件" />
     8     <property name="dist.dir" value="dist" description="存放打包后的jar文件" />
     9     <property name="doc.dir" value="doc" description="存放API文档" />
    10     <property name="web.dir" value="web" description="存放JSP等web文件" />
    11 
    12     <!-- 定义classpath -->
    13     <path id="master-classpath">
    14         <fileset file="${lib.dir}/*.jar" />
    15         <pathelement path="${classes.dir}" />
    16     </path>
    17 
    18     <!-- 初始化任务 -->
    19     <target name="init">
    20     </target>
    21 
    22     <!-- 清理相关文件 否则无法生成新的文件-->
    23     <target name="clean" depends="init" description="Destroys all generated files and dirs.">
    24         <delete dir="${classes.dir}" failonerror="false" />
    25         <delete dir="${dist.dir}" failonerror="false" />
    26     </target>
    27 
    28     <!-- 编译 -->
    29     <target name="compile" depends="clean" description="compile the source files">
    30         <mkdir dir="${classes.dir}" />
    31         <javac srcdir="${src.dir}" destdir="${classes.dir}" target="1.4">
    32             <classpath refid="master-classpath" />
    33         </javac>
    34     </target>
    35 
    36     <!-- 测试 -->
    37     <!-- <target name="test" depends="clean,compile" description="run junit test">
    38         <mkdir dir="${report.dir}" />
    39         <junit printsummary="on" haltonfailure="false" failureproperty="tests.failed" showoutput="true">
    40             <classpath refid="master-classpath" />
    41             <formatter type="plain" />
    42             <batchtest todir="${report.dir}">
    43                 <fileset dir="${classes.dir}">
    44                     <include name="**/*Test.*" />
    45                 </fileset>
    46             </batchtest>
    47         </junit>
    48         <fail if="tests.failed">
    49             <echo>失败的文件</echo>
    50         </fail>
    51     </target>
    52     -->
    53 
    54     <!-- 打包成jar -->
    55     <!-- <target name="pack" depends="test" description="make .jar file"> -->
    56     <target name="pack" depends="clean,compile" description="make .jar file">
    57         <mkdir dir="${dist.dir}" />
    58         <jar destfile="${dist.dir}/AntCase.jar" basedir="${classes.dir}">
    59             <exclude name="**/*Test.*" />
    60             <exclude name="**/Test*.*" />
    61         </jar>
    62     </target>
    63 
    64     <!-- 输出api文档 -->
    65     <target name="doc" depends="pack" description="create api doc">
    66         <mkdir dir="${doc.dir}" />
    67         <javadoc destdir="${doc.dir}" author="true" version="true" use="true" windowtitle="Test API">
    68             <packageset dir="${src.dir}" defaultexcludes="yes">
    69                 <include name="example/**" />
    70             </packageset>
    71             <doctitle>
    72                 <![CDATA[<h1>AntCase Test</h1>]]></doctitle>
    73         <bottom>
    74             <![CDATA[<i>All Rights Reserved.</i>]]></bottom>
    75     <!--<tag name="todo" scope="all" description="To do:" />-->
    76 </javadoc>
    77 </target>
    78 </project>

    project 结构图(主要用于说明Project中的结构安排,以便ant的使用):

     文件目录结构图(这个图贴出来是为了为写作记录提供方便):

    执行方式:(在cmd中或直接在eclipse中执行run as -> ant build就OK)

     可以看到每个任务的执行步骤都有执行过程信息,最后Build Successful...

    同样,在Console输出的信息也同于cmd中执行ant一样。

    感觉上,当开始一个新项目时,首先应该编写好Ant构建文件。

    Ant文件明确地定义构建的过程,并被团队中的每个程序员使用,更为重要的是这个build.xml文件必须足够精细。

    如果在GWT应用,这样一个过程是比较长的,毕竟编译成javascript文件需要的文件还是有点长的(比较耗内存)。

    很明显这是一个xml文件,所以在编写时务必遵守xml的语法格式,习题把xml编码写得简洁,易懂,并且提供足够清晰明了的注释说明,如果xml文件太大,看起来就非常费劲咯。

    每个build.xml文件应该有一个清除任务,在23~26行就有,否则等下一次再打包时会有问题(每次执行完ant后,可以在dist目录下看一下生成的jar/war文件是否是刚才ant后的最新文件,否则就是不成功的)。

    每个build.xml文件中的任务都应该有非常明确的从属关系,否则一执行ant就可以出现各种各样的意想不到的结果,因为各个任务之间的从属关系是乱的。

  • 相关阅读:
    C# 使用HtmlAgilityPack抓取网页信息
    企业微信开发之向员工付款(C#)
    企业微信开发之发放企业红包(C#)
    body-parser的使用
    NodeJs的express服务器报413 payload too large错误
    'nuxt' 不是内部或外部命令,也不是可运行的程序
    Linux node使用npm成功安装命令后,执行时却报找不到命令的问题
    npm查看全局安装了那些包的命令
    JS中==与===的区别
    JS事件流理解
  • 原文地址:https://www.cnblogs.com/blackcore/p/1627204.html
Copyright © 2011-2022 走看看