Ant实战
来源:互联网 发布:c 网络编程 多线程 编辑:程序博客网 时间:2024/05/17 07:40
利用Ant可以进行Java程序的自动化构建,只用配置好build.xml文件,其它的一切都交给Ant处理吧。
Ant可以实现的功能有:文件的处理,比如:创建、拷贝、修改、删除等,源文件的编译,自动生成Javadoc文档,自动生成Jar文件等。
Ant里面,是由一个或多个任务组成, 他们之间的依赖关系决定着该任务的执行次序,在Ant里面,任务的依赖关系是单向的,比如A依赖B的话,B就不能再依赖A,否则就相互调用成了死循环。Ant里面的任务有点象程序里面的方法一样,一个任务就是一个相对独立的、实现某一个功能的程序片段。
下面来看一实例:
<?xml version="1.0" encoding="gb2312"?>
//默认调用任务“all”
<project default="all">
//预定义,有程序里面的常量类似。默认路径为应用程序的当前路径。
<property name="confDir" location="conf" />
<property name="srcDir" location="src" />
<property name="src_temp" location="src_temp" />
<property name="buildDir" location="classes" />
<property name="distDir" location="release" />
<property name="libDir" location="E:/gftech/library" />
<property name="docDir" location="doc/doc" />
<property name="doc_temp" location="doc_temp"/>
<property name="commonDir" location="E:/gftech/project/common" />
<property name="smpDir" location="E:/gftech/project/smp" />
<property name="project.name" location="数据处理系统" />
<property name="project.version" location="1.0" />
<property name="encoding" location="gb2312" />
//定义Claspath,指定外部引用的类。其中fileset指定外部包所在的目录,include指定所要引用的外部包文件,这里指的是该目录下的所有Jar文件
<path id="classpath">
<fileset dir="${libDir}">
<include name="**/*.jar" />
</fileset>
</path>
//初始化任务。通常会在这里创建目录、文件等准备工作,为编译或生成文档做准备
<target name="init">
<tstamp />//指定时间戳
<mkdir dir="${src_temp}" />
<mkdir dir="${buildDir}" />
<mkdir dir="${distDir}" />
<mkdir dir="${doc_temp}" />
<delete>
<fileset dir="${distDir}">
<exclude name="**/cvs/*.*" />
<exclude name="**/*.bat"/>
</fileset>
<fileset dir="${docDir}">
<exclude name="**/cvs/*.*" />
</fileset>
</delete>
<copy todir="${src_temp}">
<fileset dir="${srcDir}">
<include name="**/*.java" />
<exclude name="**/test/*.java" />
</fileset>
<fileset dir="${commonDir}/src">
<include name="**/*.java" />
<exclude name="**/test/*.java" />
</fileset>
<fileset dir="${smpDir}/src">
<include name="**/*.java" />
<exclude name="**/test/*.java" />
</fileset>
</copy>
</target>
//对源文件进行编译,在编译时指定Classpath,并指test目录下的所有java文件排除在外,不进行编译
<target name="compile" depends="init">
<javac srcdir="${src_temp}" destdir="${buildDir}" excludes="**/test/**/*.java">
<classpath refid="classpath" />
</javac>
</target>
//生成Javadoc文档
<target name="doc" depends="init" description="auto generate document">
<javadoc packagenames="*" destdir="${doc_temp}" sourcepath="${src_temp}" author="true" version="true" use="true" splitindex="true" windowtitle="自然语言查询演示系统API文档">
<classpath refid="classpath" />
<doctitle>
<![CDATA[ <h1>自然语言查询演示系统(build${DSTAMP})</h1> ]]>
</doctitle>
<bottom>
<![CDATA[ <div algin="center">Copyright © 2006 www.pushget.com, All Rights Reserved.</div>]]>
</bottom>
</javadoc>
</target>
//打包生成Jar文件
<target name="jar" depends="compile">
<jar destfile="${distDir}/dh.jar" basedir="${buildDir}">
//指定Manifest文件的创建者、公司和运行时的主类(这个最关键)
<manifest>
<attribute name="Built-By" value="sinboy" />
<attribute name="Company" value="PUSHGET.Inc" />
<attribute name="Main-Class" value="com.gftech.biz.dh.DHMain" />
</manifest>
//指定要和生成的Jar文件打包到一块的外部引用包。这样生成的Jar文件不但包括本身的类文件,也包括外部引用的类文件,它的一个最大好处就是,放到任何地方不需要再配置外部引用包,就可直接运行,使用起来比较方便,不用担心考来考去时丢文件
<zipfileset src="${libDir}/classes12.jar" />
<zipfileset src="${libDir}/commons-collections-3.1.jar" />
<zipfileset src="${libDir}/commons-lang-2.1.jar" />
<zipfileset src="${libDir}/log4j-1.2.12.jar" />
<zipfileset src="${libDir}/jdom.jar" />
<zipfileset src="${libDir}/comm.jar"/>
<zipfileset src="${libDir}/derby.jar"/>
<zipfileset src="${libDir}/derbytools.jar"/>
<zipfileset src="${libDir}/jamon.jar"/>
</jar>
//把源文件进行打包
<jar destfile="${distDir}/dh-src-${DSTAMP}.jar" basedir="${src_temp}" />
</target>
//布署。在这里是生成一个完全可以独立运行的文件包
<target name="deploy">
<copy todir="${docDir}">
<fileset dir="${doc_temp}">
<include name="**/*" />
</fileset>
</copy>
<mkdir dir="${distDir}/dh" />
<mkdir dir="${distDir}/dh/conf"/>
<mkdir dir="${distDir}/dh/database"/>
<mkdir dir="${distDir}/dh/test"/>
<copy file="${distDir}/dh.jar" todir="${distDir}/dh" />
<copy todir="${distDir}/dh/conf">
<fileset dir="${confDir}">
<exclude name="**/*"/>
</fileset>
</copy>
<copy todir="${distDir}/dh/database">
<fileset dir="database">
<exclude name="**/cvs/*"/>
</fileset>
</copy>
<copy todir="${distDir}/dh/test">
<fileset dir="test">
<exclude name="**/cvs/*"/>
</fileset>
</copy>
<copy file="win32com.dll" todir="${distDir}/dh"/>
<copy file="javax.comm.properties" todir="${distDir}/dh"/>
<zip destfile="${distDir}/dhDemo.rar">
<fileset dir="${distDir}/dh">
<exclude name="**/cvs/*"/>
</fileset>
</zip>
</target>
//把临时文件清除掉
<target name="clean" description="clean classes dir">
<delete dir="${src_temp}" />
<delete dir="${buildDir}" />
<delete dir="${doc_temp}" />
</target>
//指定任务all依赖的其他任务。Ant会自动根据依赖关系,从最先被依赖的任务开始起执行
<target name="all" depends="jar,deploy,clean " description="complete all target" />
</project>
- Ant实战
- Ant实战
- Ant实战
- ANT 实战
- ANT应用----ANT实战
- ANT应用----ANT实战
- Ant实战篇 (二)
- Ant实战篇(转)
- Ant初始化数据库[实战]
- ANT应用(三)ANT实战
- Ant实战篇 (一)(1)
- Ant实战篇 (一)(2)
- Ant实战篇 (一)(3)
- Ant实战篇 (一)(4)
- Ant实战篇 (一)(2)
- Hibernate实战_笔记7(Ant)
- Ant实战之Jar文件数字签名的制作(原创)
- Ant实战之Jar文件数字签名的制作(原创)
- 能真正做到这样重视技术人员的公司总裁又有几个?
- 双处理器和双核处理器,谁强?
- Google Earth上的禽流感分布地图
- IE最新高危漏洞非官方补丁开放下载(附源码)
- Windows Vista 5342 的 Media Center 汉化补丁
- Ant实战
- 透过IT看人性(来自:赛迪网 huyanjun0307 )
- 前两天写的
- 外围防火墙规则+内部防火墙规则
- 小心啦,小心你的主板也要被烧
- 今天我想要重生
- UML辅助网站规划和设计指南
- 先开个头
- PHP邮件发送的程序 SMTP验证