2014-10-31 68 views
1

我有一個Ant文件,其中包含我的TeamCity配置使用的目標。我對這個定義的目標使用replaceregexp:使用包含引號和等號的字符串從TeamCity調用Ant ReplaceRegexp

<replaceregexp 
     file="${targetfile}" 
     match="${originalstring}" 
     replace="${updatedstring}" 
     byline="true" 
    /> 

我需要替換我的TargetFile已經包括了一組雙引號的字符串;具體而言,我需要更換minlevel =「跟蹤」minlevel =「警告」。在TeamCity的我稱之爲Antfile有以下幾點:

-Doriginalstring = =的MinLevel 「跟蹤」 -Dupdatedstring = =的MinLevel 「警告」

卻忽略了雙引號。 我確定有一個我不理解的轉義字符的組合。 從TeamCity中調用此方法的正確方法是什麼? 謝謝,

回答

0

嘗試用雙引號括住屬性值,並用反斜槓轉義文字引號。

-Doriginalstring = 「定義的MinLevel = \」 跟蹤\ 「」 -Dupdatedstring = 「定義的MinLevel = \在以空格」 警告\ 「」

類似地,對於值:

-Doriginalstring = 「定義的MinLevel = \」 跟蹤\ 「分貝= \ 」M1Auth \「」 -Dupdatedstring = 「定義的MinLevel = \」 警告\ 「分貝= \ 」M1Auth \「」

另一個解決方案是將保存文件和pas中的屬性通過-propertyfile <filename>發送到ant命令(請參閱propertyfile任務和Running Apache Ant)。

+0

謝謝,這完全符合我的需要。 現在我有第二個相關的問題。我需要更新的另一個字符串有一個嵌入空間: '-Doriginalstring = minlevel =「Trace」db =「M1Auth」 -Dupdatedstring = minlevel =「Warn」db =「M1Auth」' 我試着用空格反斜槓,但它仍然被視爲兩個獨立的論點。有什麼建議麼? – TomT 2014-11-03 17:21:20

+0

@TomT這是相同的想法(答案更新)。您需要將整個值(包括空格)包裹在外部引號內,當然也可以使用內部引號。 – manouti 2014-11-03 18:11:16

+0

這就是我以前的想法和嘗試。然而,嵌入式空間正在被認爲是一個新的Ant目標被引用的跡象。 這是我的通過: '-Doriginalstring =「minlevel = \」Trace \「writeTo = \」AuthLogDb \「」-Dupdatedstring =「minlevel = \」Warn \「writeTo = \」AuthLogDb \「」' 這裏是TeamCity所說的: 'Target'writeTo =「AuthLogDb」「」在項目中不存在 我真的很感謝幫助! – TomT 2014-11-03 21:00:48

相關問題