Ant交互

Ant脚本在运行过程中可以与操作人员进行交互。交互时使用到的主要几个标签如下:

  <input
    
message="All data is going to be deleted from DB continue (y/n)?"
    validargs
="y,n"
    addproperty
="do.delete" defaultvalue="n"
  
/>
  
<condition property="do.abort">
    
<equals arg1="n" arg2="${do.delete}"/>
  
</condition>
  
<fail if="do.abort">Build aborted by user.</fail>

input :是指输入,message - 显示给用户的提示;validargs - 只有在用户输入validargs指定的值时,输入才是有效的。addproperty - 用户在完成一次有效的输入后,会产生一个属性,该属性的名称为addproperty的值,属性的值则为用户的输入。如果用户不做输入操作(如直接回车),则属性的值将会是defaultvalue的值。

condition:是对条件进行判断,条件判断完成后,也会产生一个属性值。属性名称为property的值,而属性的值则由condition的内部标签返回值决定,默认为ture|false,但是不仅限于这两个值,如下情况:

<condition property="do.delete" value="yes" else="no">
    
<equals arg1="n" arg2="${input.value}"/>
</condition>
<!-- 
    当用户的输入为n是,equals返回为ture,此是,do.delete的值会被设置为“yes”(该值由value属性指定),否则do.delete的值为被设置为no(由else属性的值指定)。也就是说,condition产生的属性的值并不仅限于true和false
 
-->

equals:等于判断。它有两个属性,arg1和arg2,不用说,就是判断这两个属性的值是否相等了。

此外,condition还支持其它类似的判断操作符如and、or、available、isset、istrue、isfalse、contains等等(详见http://ant.apache.org/manual/CoreTasks/conditions.html)。其中有几个需要重点讲一下(个人觉得功能还是比较有用的):

正则表达式的应用(具体如何使用正则表达式这里就不说了,强大但复杂,可以写一部新华字典出来)

1.matches:先看个例子

<condition property="legal-password">
  
<matches pattern="[1-9]" string="${user-input}"/>
</condition>
<fail message="Your password should at least contain one number"
      unless
="legal-password"/>

其中呢,pattern就是正则表达式了,而string就是需要进行匹配的字符窜。而它还有几个有用的属性

casesensitive(true|false):是否区分大小写(默认为true);
singleline(true|false):单行模式,此时“.”将可以匹配换行符(默认为false);
multiline(true|false):多行模式(默认为false);

另外,在使用正则表达式时,ant还支持复用(可省很多事)。如下:

Code
<regexp id="date.pattern" pattern="^[0123]\d-[01]\d-[12]\d\d\d$"/>

<condition property="is_expected">
  
<matches string="${today}">
    
<regexp refid="date.pattern"/>
  
</matches>
</condition>
<!-- 如上,我们就可以重复地利用一段正式表达式了,就像声明了一个变量一样 -->

2.antversion

这个标签是指定ant的使用版本。为也避免使用过程中产生的不兼容性(如果把jdk1.6的代码在jdk1.4上运行时没有任何异常提示,也没有任何运行结果,你肯定很不爽),所以大家写脚本时,也尽量指定一个ant的版本需求。

antversion有两个属性:
atleast(major.minor.point):在某个版本以上(如1.7.0,通常应该是你当前脚本的运行版本)都可以正常使用;
exactly(major.minor.point):只能在这个指定的版本上运行(要求很苛刻呀,可能是这个版本上有特别的功能,而刚好其前后的版本都没有)。

下面是一个例子:

<condition property="ant-is-exact-7">
  
<antversion exactly="1.7.0"/>
</condition>

<fail unless="${ant-is-exact-7}" message="您使用的Ant版本不符合要求"/>

原文地址:https://www.cnblogs.com/ungshow/p/1366401.html