2012-11-30 66 views
2

在Ant中,如何測試某個屬性是否以給定值結束?在Ant中,如何測試某個屬性是否以給定值結束?

例如

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

我怎樣才能測試是否${destdir}"spring-beans"結束?

補充:

在我的螞蟻的contrib-1.0b3.jar,不 '的endsWith' 任務~~

回答

3

由於Matteo使螞蟻的Contrib包的一部分,螞蟻的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-beansfalse否則結束。您可以在<target>任務的參數ifunless中使用它。

+0

這適用於測試一個路徑的最後一個組件是否等於「spring-beans」。它不能用來測試一個屬性是否嚴格以該子串結尾。 –

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"/> 
+1

https://sourceforge.net/projects/ant-contrib/forums/forum/113701/topic/3635945 ?message = 8209729我有同樣的問題,並且此 – feilong

+2

不起作用!有錯誤信息「如果不支持嵌套的」endswith「元素」。 – SJunejo

+0

@SJunejo是否安裝並啓用了ant-contrib?你使用哪種版本的螞蟻contrib? – Matteo

2

你可以測試$ {destdir}是否以這樣的結尾(假設你有ant-contrib,並且正在使用Ant 1.7或更高版本)以「spring-beans」結尾。

<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$"是錨定,以匹配在所述字符串的末尾。

+0

這應該是正確的答案。 –

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}" /> 
相關問題