`
grandboy
  • 浏览: 124917 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于 ANT脚本的编写技巧

    博客分类:
  • JAVA
阅读更多
现在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构建文件通常由多个元素组成,如`project`、`target`和`task`。`project`元素是顶级元素...

    Ant构建中使用JS脚本方法

    4. **交互与控制流**:JavaScript提供了丰富的控制流语句,如`if...else`、`for`循环等,这使得Ant脚本能够根据项目需求进行条件判断和迭代操作。 5. **错误处理**:JavaScript中的异常处理机制也能在Ant脚本中使用...

    ANT脚本学习与开发指导

    这个“ANT脚本学习与开发指导”文档,显然是为了帮助初学者掌握ANT的基本用法和高级技巧。下面,我们将深入探讨ANT的核心概念、用途、基本结构以及如何进行实际操作。 一、ANT简介 ANT是Apache软件基金会的一个项目...

    ant批量打包脚本

    通过Ant脚本,开发者可以预先定义好各个渠道的配置文件,然后脚本会根据这些配置自动创建对应市场的打包文件,极大地提高了工作效率。 创建Ant批量打包脚本的基本步骤如下: 1. **安装和配置Ant**:首先确保系统...

    ant获取SVN版本信息的jar包xmltask以及安装,使用方法

    关于"方法.txt"文件,很可能是对以上过程的详细说明或额外的使用技巧。在实际操作中,你应该参照该文件提供的指南来完善你的Ant脚本。 总的来说,结合Ant、XMLTask和SVN,我们可以创建一个自动化流程,不仅能够获取...

    ant编写

    在描述中提到了一个博客链接,虽然具体内容没有提供,但通常这样的博客会包含作者关于Ant工具使用的实践经验、技巧或示例。博主“hollowinheart”可能分享了如何配置和执行Ant构建脚本,以及在实际项目中遇到的问题...

    Ant工具使用(教程)

    本教程将详细介绍Ant的使用,包括其安装、脚本编写、与其他工具的整合以及进阶技巧。 ### 一、Ant简介 Ant是一个开源的Java构建工具,它的主要优点在于跨平台性和灵活性。Ant的构建过程由一系列称为"任务"的模块...

    ant 编程资料,真的很棒

    2. **XML语法**:Ant使用XML来定义构建过程,学习XML的基本语法和结构对于编写Ant脚本至关重要。 3. **任务(Tasks)**:Ant的任务是执行特定操作的单元,如编译Java代码(javac任务)、创建JAR文件(jar任务)、...

    ant和bat资料

    在提供的压缩包文件名称列表中,“bat脚本教程.doc”很可能是一份关于如何编写和使用Bat脚本的文档。这份文档可能会涵盖基础语法、常用命令、条件语句、循环结构、错误处理等方面,对初学者来说非常有价值。 综上所...

    ant自动发布工程

    2. **Ant脚本编写** - **编写构建脚本**: 使用XML语法定义目标和任务,通过`&lt;project&gt;`、`&lt;target&gt;`、`&lt;task&gt;`等标签组织。 - **属性定义与引用**: 使用`&lt;property&gt;`标签定义属性, `${property_name}`引用属性值...

    Ant应用开发指南(学习ant的必备资料)

    其平台独立性——完全由Java编写——意味着无论是在Windows、Linux还是其他操作系统上,Ant都能无缝运行。Ant的核心价值在于它能够自动化复杂且重复的任务,如编译、打包和测试Java应用程序,从而极大地提高了软件...

    Java Development with Ant.pdf

    创建第一个Ant脚本通常从编写一个简单的`build.xml`文件开始,该文件定义了构建的目标和任务。例如,可以编写一个任务来编译Java源代码。 **理解Ant数据类型与属性** Ant提供了多种内置的数据类型,如`Fileset`、`...

    ant4eclipseant4eclipseant4eclipseant4eclipse

    - **路径问题**:确保文件路径相对于Ant脚本的位置正确,或者使用相对路径或Ant的fileset标签进行管理。 - **版本兼容性**:确保Ant4Eclipse和Eclipse版本兼容,以及Ant版本与项目需求匹配。 7. **持续集成** - ...

    (金牌共享)Ant权威指南

    通过Ant脚本,开发者可以精确控制项目的构建流程,包括编译源代码、生成Javadoc、创建JAR或WAR包、执行单元测试等。 Ant的主要特点包括: 1. **平台无关性**:由于Ant完全使用Java编写,因此可以在任何安装了Java...

    Ant权威指南电子书-中文版

    书中会详细讲解如何编写Ant构建文件(build.xml),包括定义任务(tasks)、属性(properties)以及目标(targets)。 在源码管理方面,Ant可以与其他版本控制系统如CVS、SVN等集成,实现代码的版本控制和协同开发...

    ant rpm

    如果你想要了解更多关于Ant创建RPM包的细节,可以通过提供的博文链接(https://stevenfeng.iteye.com/blog/2254608)进一步学习。这个链接可能包含具体的示例、步骤和技巧,帮助你在实际项目中应用这些知识。

    ant in action 2相关书籍

    读者可以从中学习如何配置和优化Ant脚本。 9. **源码管理与构建集成**:书中还会讲解如何将Ant与版本控制系统(如Git或SVN)以及持续集成工具(如Jenkins或Hudson)整合,实现自动化构建和测试。 10. **最佳实践与...

    ant-1.7+中文教程

    9. **最佳实践**:可能会分享编写高效、可读和易于维护的Ant构建脚本的最佳实践。 10. **问题排查**:通常,教程还会提供一些常见的错误和解决方案,帮助用户在遇到问题时快速定位和解决。 通过这个压缩包,学习者...

Global site tag (gtag.js) - Google Analytics