Ant 自动化构建技术
2013-05-09 21:29
169 查看
Ant 自动化构建技术 前言 很早就很想了解一下ant自动化构建技术,工作中确实也用到过ant,只不过都是用它作为一种辅助工具来编译一些开源项目,没有真正的去自己 动手去建立自己的工程,然后使用ant来为自己的工程服务,定制发布的目录结构. 这几天花了点时间去研究了下ant,发现这款工具着实不错,特别是在没有插件的IDE诸如Eclipse下工作,ant确实帮了很多忙.Ant使得我们可以 定制自己的开发工程目录,并配合jdk完成对工程的打包,发布.我们不必去比较它与Maven的孰优孰劣,工具或者技术都是为了服务一个群体或者对象, 每个人的使用习惯,兴趣爱好各异,只要能够高效的达成自己的目标,这样比什么都强,我从来都是实用主义的拥护者。 正文 先将自己的工程目录展示下,这里以一个完整的web项目为例:
build.xml 长成这样:
<?xml version="1.0" encoding="GBK"?> <!--工程名 工程所在的基目录--> <project name="demo" basedir="." default="all"> <!-- 工程目录特性--> <!--src 存放源代码--> <property name="src.dir" value="src"/> <!--doc 存放项目文档--> <property name="doc.dir" value="doc"/> <!--lib 存放第三方依赖包--> <property name="lib.dir" value="lib"/> <!-- dist 存放发布包--> <property name="dist.dir" value="dist"/> <!-- bin 存放可执行文件,脚本等--> <property name="bin.dir" value="bin"/> <!-- web项目发布目录--> <property name="demo.dir" value="${dist.dir}/demo"/> <!-- bulid 临时目录--> <property name="build.dir" value="build"/> <property name="build.classes" value="${build.dir}/classes"/> <property name="build.lib" value="${build.dir}/lib"/> <property name="build.doc" value="${build.dir}/doc"/> <property name="debug.flag" value="on"/> <!--设置classpath,加载第三方依赖包--> <path id="classpath"> <!--dir 表示依赖包所在的目录 包含所有lib目录下所有的jar文件 **: 与0 或者多个目录相匹配 * : 与0 或者多个字符相匹配 --> <fileset dir="${lib.dir}"> <include name="**/*.jar"/> </fileset> </path> <!-- 创建临时目录--> <target name="prepare"> <mkdir dir="${build.dir}"/> <mkdir dir="${build.classes}"/> <mkdir dir="${build.lib}"/> <!--记录构建时间戳--> <tstamp/> <echo message="${TSTAMP}"/> </target> <!--编译,打包--> <target name="bot" depends="prepare"> <!--debug : 编译时,是否打开调试开关--> <javac destdir="${build.classes}" debug="${debug.flag}"> <!--要编译的源代码目录--> <src path="${src.dir}/java"/> <!--不包含的目录文件--> <classpath refid="classpath"/> </javac> <!--打包 jarfile 打包后的jar包名称--> <jar jarfile="${build.lib}/demo.jar" basedir="${build.classes}"> <!-- <exclude name="demo/modules/**"/> --> </jar> </target> <!--发布--> <target name="deploy" depends="bot,javadoc"> <!--创建发布目录--> <mkdir dir="${dist.dir}"/> <!-- <mkdir dir="${dist.dir}/bin"/> <mkdir dir="${dist.dir}/lib"/> <mkdir dir="${dist.dir}/doc"/> <mkdir dir="${dist.dir}/config"/> --> <mkdir dir="${demo.dir}"/> <!-- 拷贝src/web 下的所有文件到 demo 目录下--> <copy todir="${demo.dir}"> <fileset dir="${src.dir}/web" includes="**"/> </copy> <!-- copy lib 目录到WEB-INF 下 --> <copy todir="${demo.dir}/WEB-INF"> <!-- copy 的时候,如果目标目录(lib)不存在,则连带源目录(lib)一并拷贝--> <fileset dir="." includes="${lib.dir}/*.jar"/> <!-- --> </copy> <!-- 将本应用demo的jar包copy到WEB-INF/lib 目录下--> <!-- <copy todir="${demo.dir}/WEB-INF/lib"> <fileset dir="${build.dir}/lib" includes="demo.jar"/> </copy> --> <!-- 拷贝build/classes编译的所有类文件到WEB-INF 下--> <copy todir="${demo.dir}/WEB-INF"> <fileset dir="${build.dir}" includes="classes/**/*.*"/> </copy> <!-- copy src 目录下所有的资源文件到classes 目录下--> <copy todir="${demo.dir}/WEB-INF/classes"> <fileset dir="${src.dir}/resource" includes="**/*.*"/> </copy> </target> <!--java doc 文档的生成非常慢,在构建时需要考虑这些--> <target name="javadoc" depends="bot"> <mkdir dir="${doc.dir}/api"/> <javadoc packagenames="com.*" sourcepath="${src.dir}/java" destdir="${doc.dir}/api" author="true" version="true"> <classpath refid="classpath"/> </javadoc> </target> <!--清理:只清理class类文件的情况--> <target name="clean"> <delete> <fileset dir="${build.classes}" includes="**/*.class"/> </delete> </target> <!--清理:还原到构建前的状态--> <target name="cleanall" depends="clean"> <delete dir="${build.dir}"/> <delete dir="${dist.dir}"/> <delete dir="${doc.dir}"/> </target> <target name="all" depends="cleanall,deploy"></target> </project>
build之后,dist目录就包含了本次要发布的web项目:
参考书目:《Ant 权威指南》 读后感: 读这本书的前三章就足够了,其它的章节可以作为手册来查阅,遇到问题再看也不完.
相关文章推荐
- 彻底掌握Android多分包技术MultiDex-用Ant和Gradle分别构建(一)
- 自动化每日构建(二)用Ant来完成java工程的每日构建
- java调用ant经行自动化构建
- 自动化每日构建(一)用Ant来完成Delphi工程的每日构建
- 彻底掌握Android多分包技术MultiDex-用Ant和Gradle分别构建(二)
- Jmeter+Ant+Jenkins构建接口自动化测试平台(Windows)
- ant和antsvn构建svn自动化打包部署脚本
- 彻底掌握Android多分包技术MultiDex-用Ant和Gradle分别构建(一)
- ant自动化构建非maven的java web项目
- 自动化构建 -- 使用Ant
- Jenkins+JMeter+Ant构建接口自动化回归测试
- 彻底掌握Android多分包技术MultiDex-用Ant和Gradle分别构建(二)
- Android自动化构建之Ant多渠道打包实践(下)
- Ant自动化构建项目
- Window下采用ant 脚本构建Android自动化编译
- 使用Ant与批处理命令实现java程序自动化版本构建
- Linux下配置Jenkins+Android+Ant自动化构建环境(一)
- 用ant的build.xml构建自动化打包android apk 完全详解(打包系列教程之二)
- Eclipse, ANT , Junit构建自动化单元测试
- 基于Ant的Delphi每日构建技术