`
tianlihu
  • 浏览: 313998 次
  • 性别: Icon_minigender_1
  • 来自: 石家庄
社区版块
存档分类
最新评论

Ant 条件判断 if

阅读更多
转载自ant 条件判断 condition


最近收到一个ticket,用ant写个build.xml,用到condition,作笔记如下:
basic elements: istrue isfalse not and or xor available isset equals  filesmatch
1、istrue isfalse:断言 真 假
<project name="testCondition">
	<target name="test">
		<condition property="scondition">
			<istrue value="true"/>
		</condition>
		<antcall target="isTrue">
		</antcall>
		<antcall target="isFalse">
		</antcall>
	</target>
	<target name="isTrue" if="scondition">
		<echo>is ture</echo>
	</target>
	<target name="isFalse" unless="scondition">
		<echo>is false</echo>
	</target>
</project>


2、逻辑运算
2.1、not 逻辑非
<project name="testCondition">
	<target name="test">
		<condition property="scondition">
			<not>
				<istrue value="true"/>
			</not>
		</condition>
		<antcall target="isTrue">
		</antcall>
		<antcall target="isFalse">
		</antcall>
	</target>
	<target name="isTrue" if="scondition">
		<echo>is ture</echo>
	</target>
	<target name="isFalse" unless="scondition">
		<echo>is false</echo>
	</target>
</project>

2.2、and 逻辑与
<project name="testCondition">
	<target name="test">
		<condition property="scondition">
			<and>
				<istrue value="true"/>
				<istrue value="false"/>
			</and>
		</condition>
		<antcall target="isTrue">
		</antcall>
		<antcall target="isFalse">
		</antcall>
	</target>
	<target name="isTrue" if="scondition">
		<echo>is ture</echo>
	</target>
	<target name="isFalse" unless="scondition">
		<echo>is false</echo>
	</target>
</project>

2.3、or 逻辑或 xor异或 (语法上与and类似)
3、available 是否可用
<project name="testCondition">
	<path id="all.test.classes">
		<pathelement location="bin"/>
	</path>
	<target name="test">
		<condition property="scondition">
			<!--在指定的classpath路径下是否存在资源 TestTest.class-->
			<available resource="TestTest.class">
				<classpath refid="all.test.classes" />
			</available>
		</condition>
		<antcall target="isTrue">
		</antcall>
		<antcall target="isFalse">
		</antcall>
	</target>
	<target name="isTrue" if="scondition">
		<echo>is ture</echo>
	</target>
	<target name="isFalse" unless="scondition">
		<echo>is false</echo>
	</target>
</project>

4、isset 指定属性是否存在
<project name="testCondition">
	<!--属性也可以通过ant参数-D来设置-->
	<property name="name" value="this is name" />
	<target name="test">
		<condition property="scondition">
			<!--如果属性name不存在则返回false-->
			<isset property="name" />
		</condition>
		<antcall target="isTrue">
		</antcall>
		<antcall target="isFalse">
		</antcall>
	</target>
	<target name="isTrue" if="scondition">
		<echo>is ture</echo>
	</target>
	<target name="isFalse" unless="scondition">
		<echo>is false</echo>
	</target>
</project>

5、equals 是否相等
<project name="testCondition">
	<!--属性也可以通过ant参数-D来设置-->
	<property name="name" value="this is name" />
	<target name="test">
		<condition property="scondition">
			<!--如果arg1的值与arg2的值相等返回true,否则为false-->
			<equals arg1="${name}" arg2="this is name" />
		</condition>
		<antcall target="isTrue">
		</antcall>
		<antcall target="isFalse">
		</antcall>
	</target>
	<target name="isTrue" if="scondition">
		<echo>is ture</echo>
	</target>
	<target name="isFalse" unless="scondition">
		<echo>is false</echo>
	</target>
</project>

6、filesmatch 比较文件
<project name="testCondition">
	<target name="test">
		<condition property="scondition">
			<!--如果file1所代表的文件与file2所代表的文件相等返回true,否则为false-->
			<filesmatch file1="testfile1.txt" file2="testfile2.txt" />
		</condition>
		<antcall target="isTrue">
		</antcall>
		<antcall target="isFalse">
		</antcall>
	</target>
	<target name="isTrue" if="scondition">
		<echo>is ture</echo>
	</target>
	<target name="isFalse" unless="scondition">
		<echo>is false</echo>
	</target>
</project>
分享到:
评论
1 楼 greatplan 2013-07-10  
<?xml version="1.0" encoding="GBK"?>
<project name="testCondition"  default="test" basedir="."> 
    <!--属性也可以通过ant参数-D来设置--> 
    <property name="name" value="this is name" /> 
    <target name="test"> 
        <condition property="scondition"> 
            <!--如果arg1的值与arg2的值相等返回true,否则为false--> 
            <equals arg1="${name}" arg2="this is name" /> 
        </condition> 
        <antcall target="isTrue"> 
        </antcall> 
        <antcall target="isFalse"> 
        </antcall> 
    </target> 
    <target name="isTrue" if="scondition"> 
        <echo message="is ture" /> 
    </target> 
    <target name="isFalse" unless="scondition"> 
        <echo message="is false" />
    </target> 
</project> 

相关推荐

    ant contrib if jar包

    总结来说,Ant Contrib If Jar包是Ant构建过程中的一个强大工具,它通过提供条件判断能力,使得构建脚本更加灵活和适应各种场景,提高了开发者的工作效率。如果你经常处理复杂构建流程,这个库无疑是一个值得添加到...

    ant-contrib.jar

    例如,`&lt;foreach&gt;`任务可以用来遍历集合,`&lt;if&gt;`和`&lt;unless&gt;`条件则允许在构建过程中进行条件判断。这些功能极大地增强了Ant的灵活性和可读性,使得构建脚本能更好地适应复杂的构建逻辑。 "README.txt"文件通常是...

    官网下载完整的Ant,包括Ant-contrib

    这对于自动化构建过程中的条件判断和循环操作非常有用。 在Ant的官方网站上,你可以找到最新版本的Ant以及Ant-contrib的下载链接。下载后,你需要将Ant-contrib的jar文件添加到Ant的类路径中,这样在执行Ant脚本时...

    Ant构建中使用JS脚本方法

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

    ant开发指南用于说明ant一些相关信息

    1. **条件语句和循环**:通过`if`、`unless`属性,可以在构建脚本中添加条件判断逻辑。而`foreach`任务则提供了循环遍历列表的能力。 2. **文件列表和路径操作**:`fileset`和`path`元素用于处理文件列表和路径,...

    ant简明教程;ant调用bat方法

    `if`和`unless`属性用于条件判断,决定目标是否执行,`description`属性用于添加目标的描述。 3. `property`元素用来定义和设置属性值,可以在构建文件内部定义,也可以通过外部文件如`build.properties`引入。属性...

    ant-contrib-0.6

    除了`for`宏,`ant-contrib`还提供了其他有用的宏,如`foreach`、`if`、`unless`等,它们分别对应于迭代、条件判断等功能,使得Ant脚本可以处理更复杂的逻辑。 "使用说明.txt"文件则详细介绍了如何将`ant-contrib`...

    ant-contrib源文件

    这些任务使得Ant脚本可以进行循环操作、条件判断等更复杂的逻辑控制,极大地增强了Ant脚本的表达能力。 "ant-contrib"目录下的"antlib.xml"文件是Ant Contrib的核心资源,它通过Ant的类加载机制被引入到构建环境中...

    ant 工程

    4. **条件语句和循环**:Ant支持条件判断(if/else)和循环结构,使构建过程更加灵活。 5. **依赖关系**:如何定义任务间的依赖关系,确保构建顺序的正确性。 6. **自定义任务**:Ant允许开发者编写自定义任务,以...

    自动化测试系列二 ANT

    6. **条件与循环**:ANT的&lt;if&gt;和标签允许在构建脚本中添加条件判断和循环逻辑,使脚本更灵活。 7. **构建过程的定制化**:ANT的XML配置文件是其灵魂,可以根据项目需求自定义构建流程,实现高度定制化的自动化测试...

    ANT批量打包工具及教程

    4. **使用条件语句**:Ant-contrib库提供了类似if的条件标签,用于在不同渠道间切换打包参数。例如,`&lt;if&gt;`和`&lt;else&gt;`可以用来根据条件选择不同的keystore文件。 5. **处理签名**:为每个渠道准备对应的keystore文件...

    apache-ant-1.8.4

    4. **条件语句和循环**:Ant提供了`if`、`unless`、`for`等元素,允许在构建脚本中添加条件判断和循环控制,增强了脚本的灵活性。 5. **插件机制**:Ant支持丰富的插件系统,通过添加外部库或第三方插件,可以扩展...

    Ant工具使用(教程)

    1. **条件判断**:Ant提供了一系列条件任务,如`if`、`unless`,可以基于特定条件执行任务。 2. **依赖管理**:通过`&lt;classpath&gt;`元素可以管理类路径,包括外部库的引用。 3. **文件集(Filesets)**:用于指定一组...

    Ant详细配置总结

    - **条件判断**:使用`&lt;condition&gt;`标签结合`&lt;if&gt;`和`&lt;unless&gt;`标签可以实现条件执行任务。 - **循环结构**:通过`&lt;foreach&gt;`标签可以对一组文件或目录执行相同的操作。 - **扩展任务**:除了内置的任务之外,还可以...

    ant-contrib-1.0b3的jar.zip

    这个库为Ant提供了许多额外的任务和条件,使得Ant脚本能够执行更复杂的操作,如循环、判断等。 `ant-contrib-1.0b3.jar`是Ant Contrib项目的一个版本,它包含了一系列自定义的任务和标签,用于增强Ant的灵活性。...

    Apache Ant 使用指南

    4. **条件语句与循环**:学习如何在Ant中使用`if`、`unless`、`for`等元素进行条件判断和循环操作,使得构建脚本更加灵活。 5. **类路径管理**:理解如何设置和管理类路径(classpath),确保构建过程中能正确找到...

    ant打包编译全套资料

    7. **条件与选择**:通过`&lt;if&gt;`和`&lt;condition&gt;`等标签实现条件判断,根据不同的情况执行不同的任务。 8. **脚本支持**:Ant支持使用Java、JavaScript、Groovy等脚本语言编写复杂逻辑。 9. **外部工具集成**:如通过`...

    ant自动发布工程

    - **条件语句与选择器**: Ant提供`&lt;if&gt;`、`&lt;unless&gt;`等标签实现条件判断,`&lt;available&gt;`检查文件或目录是否存在。 3. **Java工程的构建过程** - **清理(Clean)**: 清理上次构建产生的临时和目标文件,常用`...

    ant-contrib-1.0.jar.zip

    例如,它提供了for循环、if/else条件判断、property函数等,这些都是Ant原生不支持的特性。这些增强使得Ant脚本更接近于编程语言,可以处理更复杂的构建逻辑。 在"ant-contrib-1.0.jar.zip"中,最重要的文件是"ant-...

    ant打包详细教程

    在实际使用中,你可能会遇到依赖管理、条件判断、属性设置等复杂情况,Ant都提供了相应的解决方案。例如,`classpath`元素可以管理项目依赖的库,`if`和`unless`属性可以实现条件控制,`property`元素则用于设置和...

Global site tag (gtag.js) - Google Analytics