在Ant中,如何测试属性是否以给定值结束?
例如
<property name="destdir"
value="D:\FeiLong Soft\Essential\Development\repository\org\springframework\spring-beans" />
如何测试${destdir}
是否以"spring-beans"
结尾?
其他
在我的ant-contrib-1.0b3.jar中,没有'endswith'任务~~
答案 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>
是必须使用
<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}" />