现在build有几种选择,用得最多恐怕还是ANT,当然Maven异军突起。有赶超前辈之势,虽然看资料说Maven多优秀,解决了ANT的问题(但是也带来新的问题),但是,我还是喜欢ANT.
使用ANT一定要写build脚本,就是build.xml。 但是“简单”的脚本也有很多学问。还是在老外的严谨的“治技术”的思想下才认识到的。把我自己体会记录在这里。
下面给出一个例子:
<project name="project" default="dist" basedir=".">
<property environment="env" />
<property name="root" value="." />
<condition property="isUnix">
<os family="unix" />
</condition>
<condition property="isWindows">
<os family="windows" />
</condition>
<condition property="systempropsfile" value="${basedir}/unixbuild.properties" else="${basedir}/build.properties">
<os family="unix" />
</condition>
<property file="${systempropsfile}"/>
<path id="build.path">
<fileset dir="${web.library.dir}">
<include name="**/*.jar" />
</fileset>
</path>
<target name="init" description="">
<echo message="#### S T A R T SAMPLE BUILDING ####" />
<tstamp />
<echo message="Started on ${TODAY} at ${TSTAMP}" />
<echo message="The base directory: ${basedir}" />
<echo message="Using properties file: ${systempropsfile}" />
</target>
<target name="clean" depends="init">
<delete dir="${dist.dir}/${project.war}" />
<delete dir="${build.dir}" />
<mkdir dir="${dist.dir}" />
<mkdir dir="${build.dir}" />
</target>
....................
....................
</project>
1. 首先说第一行: 项目名称,这个最好用一个比较有意义的名字。而basedir变量是ANT的默认变量,指build.xml的绝对路径。 当然不写也可以直接使用,但是仍然建议显式的定义一下比较好。
2. 5~11行是处理不同平台的不同情况。如果脚本里针对不同平台调用不同的其他的脚本,这几行就很有必要了。
3. 13~16行,还是处理不同平台的情况,但是只针对properties文件,之所以有properties文件,是因为我们在不同平台下必须指定不同的目录。如果我在windows下可以指定c:/dev/project目录做为build目录,而且在linux下就不应该这么指定.所以必须加载不同的properties文件,有时在linux下还要考虑目录权限问题,如果想修改目录,把这些目录变量集中放在一个properties目录里找起来也很方便。
4. 24~30行,显示一些提示信息,这当然不是必须的,但却是必要的。例如我这里就显示日期和当前使用的properties文件。这些信息对于生成日志和检查错误很有用。
5. 32~37行,是清除以前产生的文件,在一次build开始一般都有清除的工作要做,所以一般的build里都有这个target.这里面有一个技巧,就是为什么不直接删除目录,还是先删除文件,再删除目录呢?是不是多此一举呢? 不是!因为很有可能这个目录是不能删除的,而文件一般都是可以删除的,你马上是可以产生出来文件。但是目录就不同了,可能有些目录你不可控的情况出现。只要删除文件一般也就够了。
6. 后面的target就根据自己的需要处理吧,一般没有什么好说的。
下面给出两个properties文件的内容:
#########################
### Global Settings ###
#########################
### Project base directories ###
source.dir=${basedir}/src
dist.dir=${env.HOME}/project/
build.dir=${dist.dir}/build/
web.library.dir=${basedir}/WebContent/WEB-INF/lib
build.web.library.dir=${build.dir}/WEB-INF/lib
web.classes.dir=${basedir}/WebContent/WEB-INF/classes
build.web.classes.dir=${build.dir}/WEB-INF/classes
web.content.dir=${basedir}/WebContent
web.info.dir=${basedir}/WebContent/WEB-INF
build.web.info.dir=${build.dir}/WEB-INF
build.output.dir=${dist.dir}/out/
project.war=project.war
#########################
### Global Settings ###
#########################
### Project base directories ###
source.dir=${basedir}/src
dist.dir=c:/dev/project/
build.dir=${dist.dir}/build/
web.library.dir=${basedir}/WebContent/WEB-INF/lib
build.web.library.dir=${build.dir}/WEB-INF/lib
web.classes.dir=${basedir}/WebContent/WEB-INF/classes
build.web.classes.dir=${build.dir}/WEB-INF/classes
web.content.dir=${basedir}/WebContent
web.info.dir=${basedir}/WebContent/WEB-INF
build.web.info.dir=${build.dir}/WEB-INF
build.output.dir=${dist.dir}/out/
project.war=project.war
这两个文件差别就是那7行部分,就是因为上面我提到的目录权限问题,所以linux下的默认目录不要指定到/home下等不能保证用户有权限的目录。
就这么点体会,今天不太忙, 把它发上来。
分享到:
相关推荐
ant脚本资料ant脚本资料ant脚本资料ant脚本资料ant脚本资料ant脚本资料ant脚本资料
ant脚本通用模板ant脚本通用模板ant脚本通用模板ant脚本通用模板ant脚本通用模板
通过ant对各种语言脚本做运行管理,并输出报告!
ant脚本
ant脚本通用模板222ant脚本通用模板222ant脚本通用模板222ant脚本通用模板222ant脚本通用模板222
ant脚本编译出jar
ant 脚本从svn上取代码打包代码全,同时包括相关的jar包
ant脚本例子,一个build.xml模板, 修改后直接运行。
通过ant脚本,编译打包android工程。 编译打包android工程的ant脚本,Android官方提供的打包脚本。 有注释
Ant是一个Apache基金会下的跨平台的构件工具,它可以实现项目的自动构建和部署等功能。在本文中,主要熟悉怎样将Ant应用到Java项目中,让它简化构建和部署操作。
我的ant脚本,用于打包文件,其中包含了常见的jar包工具,学习常用的ant命令
java项目ant打包脚本,包括环境变量设置,打包脚本等信息,共有三个文件 ant.bat、build.xml、setEnv.cmd
Ant脚本入门 十分适用与初级程序员 观看。自己写写例子!
ant的api文档,maven的文档,还有一些ant配置文件
自定义NetBeans工具生成的ant脚本,从此自己通过ant脚本让Netbeans清理、编译和打包。
Ant和批处理脚本.rar Ant和批处理脚本.rar
利用ant脚本 自动构建svn增量/全量 系统程序升级包 标签: antsvn自动化测试发布 分类: ant 不会用ant打包、部署项目的工程师,不是一个好程序员(测试) 副标题:利用ant脚本 自动构建svn增量/全量 系统程序...
ant脚本学习
NULL 博文链接:https://hollowinheart.iteye.com/blog/962906