2
4

4 回答 4

4

您可以测试 ${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$"中的“$”是匹配字符串末尾的锚点。

于 2013-01-31T04:13:00.363 回答
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}将包含trueif${destdir}string-beansfalse其他方式结尾。您可以在任务的iforunless参数中使用它<target>

于 2012-11-30T17:35:36.677 回答
0

您可以使用Ant-Contrib的EndWith条件

<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"/>
于 2012-11-30T17:18:34.783 回答
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}" />
于 2015-12-28T12:29:54.817 回答