on the road

working hard

 
 Blog首页我的首页 我的文章我的像册我的圈子后台管理给我留言聚合
当前位置:首页-on the road->文章内容
ant的一些小例子
评论数() 阅读次数(619)发布时间:2006-12-09 21:45
今天比较系统的看了下ANT,发现自己以前对ant的看法太肤浅了,今天才理解ant是一个多么有用的Workflow framework,而远远超越了一个部署工具。
ant+想象力=powerful tools。
还没有接触ant自定义task的编写,只学习了datatype,property,core task。
在学习的过程中跟着写了些例子,发现对datatype的理解还是比较混乱,还要多写写才要的。
现把一些今天写的文档弄出来,
还是望指点,能给一些best practice。
<?xml version="1.0" encoding="UTF-8"?>
<project name="xdocletExample" default="selectTask" basedir=".">
 <property name="xdoclet.lib.dir" location="${basedir}/lib" />
 <property name="gen.src.dir" location="${basedir}/target" />
 <property name="src.dir" location="${basedir}/src/" />
 <property name="build.dir" location="${basedir}/build/classes" />
 <property name="template.dir" location="${basedir}/template" />
 <property name="customtag.dir" location="${basedir}/bin" />
 <property name="junit.build.dir" location="${basedir}/build/test" />
 <property name="junit.src.dir" location="${basedir}/test" />
 <property name="jar.dir" location="${basedir}/build/dist" />
 <property name="doc.dir" location="${basedir}/build/doc" />

 <fileset id="class.path" dir="${xdoclet.lib.dir}" includes="*.jar" />
 
<path id="xdoclet.lib.path">
  <fileset refid="class.path" />
 </path>
 
 <path id="junit.lib.path">
  <fileset refid="class.path" />
  <pathelement location="${junit.build.dir}" />
 </path>
 
 <patternset id="gener.dir">
  <include name="${src.dir}/temp/**/*.java" />
  <exclude name="${src.dir}/org/**/*.java" />
 </patternset>
 
 <target name="init">
  <mkdir dir="${junit.build.dir}" />
  <mkdir dir="${build.dir}" />
  <mkdir dir="${jar.dir}" />
  <mkdir dir="${doc.dir}" />
 </target>
 
 <!--为ant创建一个dtd文件-->
 <target name="createdtd">
  <antstructure output="${junit.build.dir}/build.dtd" />
 </target>
 <!-- END -->
 
 <!--定义时间变量格式-->
 <tstamp>
  <format property="buildtime" pattern="yyyy-MM-d hh:mm aa" />
 </tstamp>
 <!-- END -->
 
 <!--测试是否含有环境变量JAVA_HOME -->
 <property environment="env" />
 <target name="checkJavaHome" if="env.JAVA_HOME">
  <echo message="java_home has been setup" />
 </target>
 <!--  END -->
 
 <!-- 运行系统的dir命令 -->
 <target name="applydir">
  <echo>begin dir current folder</echo>
  <apply executable="dir" vmlauncher="false" os="Windows XP" failonerror="true">
   <fileset dir="." />
  </apply>
 </target>
 <!-- END -->
 
 <!--输入一个可以执行的任务-->
 <target name="selectTask">
  <input message="请输入一个您要执行的任务,可选择的有:" addproperty="ant.task" />
  <echo message="" />
  <antcall target="${ant.task}" />
 </target>
 <!-- END -->
 
 <!-- 判断Junit包是否在类路径中,并设置canTest属性-->
 <available classname="org.junit.Test" property="canTest" />
 <target name="availabletest" if="canTest">
  <echo>
   ${canTest}
   org.junit.Test available!
  </echo>
 </target>
 <!-- END -->
 
 <!-- filter 测试 提供说明.txt中的版本声名和构建时间的信息-->
 <target name="buildIntro">
  <delete>
   <fileset dir="${gen.src.dir}">
    <include name="**/*.txt" />
   </fileset>
  </delete>
  <copy todir="${gen.src.dir}" filtering="true">
   <fileset dir="${src.dir}">
    <include name="**/*.txt" />
   </fileset>
   <filterset begintoken="%" endtoken="%">
    <filter token="copyright" value="Copyright (c) 2006 www.stefstudio.com " />
    <filter token="buildtime" value="${buildtime}" />
   </filterset>
  </copy>
 </target>
 <!-- END -->
 
 <!-- 编译测试类 -->
 <target name="buildtest" depends="init">
  <!--如果targetfile(编译的.class文件)比源文件旧,则删除所有.class文件,相当于一次clean -->
  <dependset>
   <srcfileset dir="${junit.src.dir}" includes="**/*.java" />
   <targetfileset dir="${junit.build.dir}" includes="**/*.class" />
  </dependset>
  <javac destdir="${junit.build.dir}" srcdir="${junit.src.dir}" debug="true">
   <classpath refid="xdoclet.lib.path" />
  </javac>
 </target>
 <!-- END -->
 
 <!--测试-->
 <target name="junittest" depends="buildtest">
  <junit printsummary="withOutAndErr" haltonfailure="true">
   <classpath refid="junit.lib.path" />
   <formatter type="brief" usefile="false" />
   <formatter type="xml" />
   <batchtest todir="${junit.build.dir}">
    <fileset dir="${junit.build.dir}" includes="**/*Test*.class" />
   </batchtest>
  </junit>
 </target>
 <!-- END -->
 
 <!-- 编译xDoclet customTag包并打包,同时在一个.txt文件中持续记录-->
 <target name="buildAndJarTags" depends="init">
  <!--编译tags文件-->
  <javac destdir="${build.dir}" srcdir="${src.dir}">
   <classpath refid="xdoclet.lib.path" />
  </javac>
  <echo file="${basedir}/build/readme.txt" append="true"> build tags src at ${buildtime} 
  </echo>
  <!--打包jar-->
  <jar destfile="${jar.dir}/customTags.jar" basedir="${build.dir}" includes="**/*.class" />
  <echo file="${basedir}/build/readme.txt" append="true"> jar tags class at ${buildtime}  
  </echo>
  <!--删除readme.txt文件中的制表符,替换为2个空格-->
  <fixcrlf srcdir="${basedir}/build" tab="remove" tablength="2" includes="*readme.txt" />
 </target>
 
 
 <!-- 生成Tags包的文档 -->
 <target name="generDoc" depends="init">
  <javadoc destdir="${doc.dir}">
   <package name="org.xdoclet.customTags.*" />
   <sourcepath location="${src.dir}" />
   <classpath location="${xdoclet.lib.dir}" />
  </javadoc>
 </target>
 
 
 <!--定义XDoclet任务-->
 <taskdef name="xdoclet" classname="xdoclet.DocletTask" classpathref="xdoclet.lib.path" />
 <!-- END -->
 
 
 <target name="summary" depends="init">
  <xdoclet destdir="${gen.src.dir}">
   <fileset dir="${src.dir}" patternset="gener.dir" />
   <template templateFile="${template.dir}/summary.xdt" destinationfile="summary.txt" />
  </xdoclet>
 </target>
 
 
 <target name="generitf">
  <xdoclet destdir="${gen.src.dir}">
   <fileset dir="${src.dir}" patternset="gener.dir" />
   <template templateFile="${template.dir}/generitf.xdt" acceptInterfaces="false" acceptAbstractClasses="false" destinationfile="I{0}QueryDAO.java" />
  </xdoclet>
 </target>
 
 <target name="gener">
  <xdoclet destdir="${gen.src.dir}/temp">
   <fileset dir="${src.dir}" patternset="gener.dir" />
   <template templateFile="${template.dir}/gener.xdt" acceptInterfaces="false" acceptAbstractClasses="false" destinationfile="{0}QueryDAOImpl.java" />
  </xdoclet>
 </target>
 <target name="cleanall">
  <delete>
   <fileset dir="${src.dir}/temp">
    <include name="*.java" />
   </fileset>
   <fileset dir="${gen.src.dir}">
    <include name="**/*.java" />
   </fileset>
  </delete>
 </target>
 
 <target name="clean">
  <delete>
   <fileset dir="${gen.src.dir}">
    <include name="**/*.java" />
   </fileset>
  </delete>
 </target>
 
</project>
都有一些解释,
不多写了,继续学习~
 
 
 【评论】 【加入收藏】 【推荐给朋友】 【字体:  】 【关闭】   

 
Aboutus | 联系我们 | 程序开发 | 网站地图 | 留言板
Copyright (C) 2005 EasyJF.com, All Rights Reserved
版权所有 简易java框架网
渝ICP备06004507 如有意见请与我们联系 Powered by EasyJFramework