2012-11-30 61 views
2

要求:Ant構建閱讀版本號

運行svn log -l 1命令,這將有一個這樣的輸出。

------------------------------------------------------------------------ 
    r2633 | name | 2012-11-07 17:28:20 +0530 (Wed, 07 Nov 2012) | 1 line 
    My comment. 
    ------------------------------------------------------------------------ 

我需要提取的版本號2633,並指定這是一個屬性。我寧願避免螞蟻貢獻。

我試了一下:

<echo>Run svn log -l 1</echo> 
<exec executable="svn" outputproperty="svn.output" failonerror="false"> 
    <arg line="log -l 1"/> 
</exec> 
<echo message="Output was: ${svn.output}" /> 

這得到了屬性$內上述輸出{} svn.ouput但我不知道我怎麼從這個提取版本。

其他選項是將變量寫入文件,但是又如何將版本提取到屬性中?

在此先感謝。

+1

svn log -q -l 1會更好。你可以在exec內部使用管道嗎? –

+1

svn log | grep r | gawk {'print $ 1'}或將**純版本**寫入帶有子文件的文件 –

+0

我在windows上執行它,所以無法使用grep。但謝謝你的建議。 – PravinCG

回答

2

沒有一種乾淨的方法可以從標準Ant中的屬性中提取子字符串。有關替代解決方案,請參閱this Stack Overflow answer

+0

這是真的。感謝您的鏈接,我早些時候提到過。我想知道如果使用文件來寫輸出,然後使用正則表達式讀取所需的數據會更好。我想避免任何更多的依賴。 – PravinCG

+0

鏈接中的第四個答案確實如此 - 寫入一個臨時文件。文件並用正則表達式進行搜索。 –

+0

是的,一些調整工作!謝謝! – PravinCG