• 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版本不符合要求"/>

  • 相关阅读:
    IO流
    集合中的工具类Collections和Arrays
    排序 查找
    函数及数组
    变量、静态的和单例模式
    java流程控制
    configure使用
    --sysroot
    LD_PRELOAD
    Linux下内存检测工具:asan :编译-连接-运行选项
  • 原文地址:https://www.cnblogs.com/ungshow/p/1366401.html
Copyright © 2020-2023  润新知