在Ant中,如何测试属性是否以给定值结束?

时间:2012-11-30 17:05:33

标签: ant ant-contrib

在Ant中,如何测试属性是否以给定值结束?

例如

 <property name="destdir" 
     value="D:\FeiLong Soft\Essential\Development\repository\org\springframework\spring-beans" />

如何测试${destdir}是否以"spring-beans"结尾?

其他

在我的ant-contrib-1.0b3.jar中,没有'endswith'任务~~

4 个答案:

答案 0 :(得分:3)

作为Matteo,Ant-Contrib包含许多不错的东西,我大量使用它。

但是,在这种情况下,只需使用<basename>任务:

<basename property="basedir.name" file="${destdir}"/>
<condition property="ends.with.spring-beans">
   <equals arg1="spring-beans" arg2="${basedir.name}"/>
<condition>

如果${ends.with.spring-beans}true结束,则${destdir}属性将包含string-beans,否则将包含false。您可以在if任务的unless<target>参数中使用它。

答案 1 :(得分:3)

你可以测试$ {destdir}是否以这样的“spring-beans”结尾(假设你有ant-contrib,并且正在使用Ant 1.7或更高版本)。

<property name="destdir" value="something\spring-beans" />
<condition property="destDirHasBeans">
  <matches pattern=".*spring-beans$" string="${destdir}" /> 
</condition>
<if>
  <equals arg1="destDirHasBeans" arg2="true" />
  <then>
      $destdir ends with spring-beans ...
  </then>
  <else> ...
  </else>
</if>

正则表达式模式".*spring-beans$"中的'$'是在字符串末尾匹配的锚点。

答案 2 :(得分:0)

您可以使用EndWith

中的Ant-Contrib条件
<endswith string="${destdir}" with="spring-beans"/>

例如

<if>
    <endswith string="${destdir}" with="spring-beans"/>
    <then>
        <!-- do something -->
    </then>
</if>

修改

<endswith>是必须使用

安装和启用的Ant-Contrib软件包的一部分
<taskdef resource="net/sf/antcontrib/antlib.xml"/>

答案 3 :(得分:0)

JavaScript功能可用于ANT中的字符串操作:

<script language="javascript"> <![CDATA[

        // getting the value for property sshexec.outputproperty1
        str = project.getProperty("sshexec.outputproperty1");

        // get the tail , after the separator ":"
       str = str.substring(str.indexOf(":")+1,str.length() ).trim();

        // store the result in a new property
        project.setProperty("res",str);


    ]]> </script>
<echo message="Responce ${res}" />