ant扩展之if,for

Ant-contrib是使用Ant编写脚本最重要的补充。当使用Ant编写一些较为复杂的逻辑功能,比如循环和流程判断时,自然希望 Ant 能支持这种编程能力。然而 Ant 核心任务中并没有提供 <if> 任务,只是在 <target> 任务的属性中支持 if 属性,比如 <target name="targetA" if="property-A-present"/>,即表示只有 property-A-present 属性存在才执行targetA 目标。但是,必须注意的一点是,这里的 if 并不是判断 module-A-present 属性是否设置为特定值,而仅仅是检查该属性是否被设置了,因而其可编程性并不是很强。

demo:

build.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project  default="main">
	<property file="./build.properties" />
	<!--//使用taskdef定制ant-contrib任务 -->
	<taskdef resource="net/sf/antcontrib/antlib.xml">
		<classpath>
			<pathelement location="./lib/ant-contrib-1.0b3.jar" />
		</classpath>
	</taskdef>

	<target name="init">
		<delete dir="../workspace" />
		<mkdir dir="../workspace" />
	</target>

	<target name="condition">
		<if>
			<!--//条件判断,判断arg1 与 arg2两者的值是否相符, 其中arg2为从build.properties中取出的值 -->

			<equals arg1="true" arg2="${compile.arg}" />
			<then>
				<!-- //若符合判断条件,即条件成功,使用antcall命令来执行某个target-->

				<antcall target="compile.codes.main" />
			</then>

			<elseif>
				<equals arg1="${compile.arg}" arg2="false" />
				<then>
					<antcall target="compile.codes.fb" />
				</then>
			</elseif>

			<else>
				<!-- //若所判断条件没有成功,则输出提示信息.-->
				<echo message="The value of the compile.arg can not be matched." />
			</else>
		</if>
	</target>

	<target name="compile.codes.main">
		<for list="${compile.codes.main}" param="mainfile">
			<sequential>
				<echo>[email protected]{mainfile}</echo>
			</sequential>
		</for>
	</target>

	<target name="compile.codes.fb">
		<for list="${compile.codes.fb}" param="fbfile">
			<sequential>
				<if>
					<equals arg1="fb3.c" arg2="@{fbfile}" />
					<then>
						<!-- //若符合判断条件,即条件成功,使用antcall命令来执行某个target-->

						<antcall target="invoke" />
					</then>
				</if>
				<echo>compile.codes.fb... @{fbfile}</echo>
			</sequential>
		</for>
	</target>
	<target name="invoke">
		<echo>compile.codes.fb... @{fbfile}</echo>
	</target>
	<target name="main" depends="condition">
	</target>
</project>

参考:

http://blog.csdn.net/sodino/article/details/16923615

http://blog.163.com/ai_zxc/blog/static/462127201210201310593/

http://blog.sina.com.cn/s/blog_5eb1a2670100iwa2.html

时间: 2024-11-08 18:28:57

ant扩展之if,for的相关文章

整理的Unity导出安卓工程利用ANT进行多渠道批量打包APK

Unity导出的安卓工程利用ant进行多渠道循环批量打包 一:设置JAVA环境变量 做android开发的配置这个是基础. win7 下配置java环境变量,下面是链接 http://www.cnblogs.com/zhj5chengfeng/archive/2013/01/01/2841253.html 二:配置Android的SDK环境变量 除了需要Java的环境变量,我们还需要配置Android的sdk的位置,名字是ANDROID_HOME,值就是你的android的sdk的位置,比如我的

Android利用ant自动编译、修改配置文件、批量多渠道,打包生成apk文件

原创文章,转载请注明:http://www.cnblogs.com/ycxyyzw/p/4535459.html android 程序打包成apk,如果在是命令行方式,一般都要经过如下步骤: 1.用aapt命令生成R.java文件 2.用aidl命令生成相应java文件 3.用javac命令编译java源文件生成class文件 4.用dx.bat将class文件转换成classes.dex文件 5.用aapt命令生成资源包文件resources.ap_ 6.用apkbuilder.bat打包资源

Maven与Antx(整理)

http://blog.csdn.net/ghost_t/article/details/5709640 一.Maven与Antx概况: Antx简介 在讲为什么使用maven之前我想说一下,antx,很多人知道ant,其实antx是阿里人自己搞的一套基于ant扩展的在某些方面类似于 mavnen的工具,我们甚至有eclipse的antx插件,可想而知antx在阿里的项目管理中的重要地位.它有很多优秀之处: 1. 可以比较好的支持第二方库 2. 支持项目之间的依赖和继承 3. antx可以用je

混合式app ionic2.x 手动搭建开发环境教程分享(nodejs,jdk,ant,androidsdk)

1.ionic简介 为什么选用ionic: 彻底开源且免费 性能优异 基于红的发紫的AngularJs 漂亮的UI 强大的命令行(基于更热门的nodejs) 开发团队非常活跃 ngCordova,将主流的Cordova API或者Cordova插件封装为AngularJS扩展,使用非常方便 开源免费的webfont icon库ionicons,基本满足你icon需求 2.相关下载: Node.js(npm安装工具) :  https://nodejs.org/en/ jdk (android编译

ANT+ 之【心率传感器设计】【下】

好久不见!!最近的几个月发生了不少事情,导致精力极度分散,自己todolist上各个项目的优先级不停地被调整,博客的事情就被暂时搁置了下来,特别是__AW君__的出现,让自己突然有了一种说不出来的感觉……唔,果然love is blind没错,所幸自己毕竟是一个天生乐观的人,接下来的剧情我会用心去体验的~ 让我们永远相信美好的事情即将发生吧! /****************************************************************************

转载ant

Ant工具 Ant是一种基于Java的build工具.理论上来说,它有些类似于(Unix)C中的make ,但没有make的缺陷.目前的最新版本为:Ant 1.9.4[1] . 既然我们已经有了make, gnumake, nmake, jam以及其他的build工具为什么还要要一种新的build工具呢?因为Ant的原作者在多种(硬件)平台上开发软件时, 无法忍受这些工具的限制和不便.类似于make的工具本质上是基于shell(语言)的:他们计算依赖关系,然后执行命令(这些命令与你在命令行敲的命

Ant自动打包

Ant使用 在ant的官网http://ant.apache.org进行下载后apache-ant-1.8.2包 解压(存放的路径不要有中文字符) 把ant里的lib设置到环境变量:E:\Android\apache-ant-1.8.2\lib 这样在命令行里就可以直接使用ant 学习资料:1.  ant使用指南.rar 2. 文档:apache-ant-1.8.2/docs/manual/index.html下的Ant Tasks à List of Tasks Ant的For循环 在ant的

使用ant编译项目技巧

ant编译时指定jdk的版本 系统的jdk版本是1.6,而项目使用的jdk版本是1.5,所以在编译时需要指定jdk的版本为1.5,可以使用下面的方法为javac 任务指定fork和executable,是用指定编译器编译,这个方法更灵活,您甚至可以指定非sun公司的java编译器.详见:6.5节 编译时忽略指定的java文件 在编译时可能有的包下面的java文件不需要编译,那么就可以使用这个用法,详见:6.5节 打包时忽略指定的class文件 在打包时可能有的class文件不想打入到包中,那么就

Ant之build.xml详解

Ant的概念 可能有些读者并不连接什么是Ant以及入可使用它,但只要使用通过Linux系统得读者,应该知道make这个命令.当编译Linux内核及一些软件的源程序时,经常要用这个命令.Make命令其实就是一个项目管理工具,而Ant所实现功能与此类似.像make,gnumake和nmake这些编译工具都有一定的缺陷,但是Ant却克服了这些工具的缺陷.最初Ant开发者在开发跨平台的应用时,用样也是基于这些缺陷对Ant做了更好的设计. Ant 与 makefile Makefile有一些不足之处,比如