2014-10-31 69 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

相关问题