2013-04-18 41 views
1

我試圖處理一個字符串,當出現錯誤時,它有一個長的錯誤信息而不是一個短的值。我的Ant腳本包含以下代碼: 在字符串上使用螞蟻長度條件時遇到問題

<!-- build.svnversion is invalid if it's longer than 15 characters --> 
<length property="build.svnversion.length" string="${build.svnversion}" /> 
<echo message="build.svnversion.length: ${build.svnversion.length}"/> 

<condition property="build.svnversion" value="N/A" else="${build.svnversion}"> 
    <length string="${build.svnversion}" when="gt" length="15" /> 
</condition> 
<echo message="build.svnversion: ${build.svnversion}" /> 

這將產生以下的輸出:

[echo] build.svnversion.length: 148 
[echo] build.svnversion: svn: The path '.' appears to be part of a Subversion 1.7 or greater 
[echo] working copy. Please upgrade your Subversion client to use this 
[echo] working copy. 

爲什麼不build.svnversion得到,因爲它的長度設置爲N/A顯然是大於15?

回答

3

您是否嘗試重置財產build.svnversion

一旦一個屬性設置,它不能被取消設置或更改。

在您的<condition/>任務中,您必須使用其他屬性名稱。

<!-- build.svnversion is invalid if it's longer than 15 characters --> 
<length property="build.svnversion.length" 
    string="${build.svnversion}" /> 

<echo message="build.svnversion.length: ${build.svnversion.length}"/> 

<condition property="real.build.svnversion" 
    value="N/A" 
    else="${build.svnversion}"> 
    <length string="${real.build.svnversion}" 
     when="gt" length="15" /> 
</condition> 
<echo message="real.build.svnversion: ${real.build.svnversion}" /> 

1.。您可以使用Ant-Contrib的<var/>任務更改屬性的值或完全取消設置,但這被認爲是不正確的形式。

+0

謝謝。這是問題。沒有意識到你一旦設置就無法改變屬性值。不幸的是,我不能在沒有更多聲望點的情況下爲您的解決方案投票。 – StevenHB

+0

@StevenHB你不必爲_vote_解決方案。你接受解決方案。答案左側應該有一個複選標記的大綱。選擇它,它變成綠色。 –

+0

如何[接受答案](http://meta.stackexchange.com/a/65088/173356);) – Seki