使用包含引号和等号的字符串从TeamCity调用Ant ReplaceRegexp

时间:2014-10-31 21:49:54

标签: regex ant teamcity

我有一个Ant文件,其中包含我的TeamCity配置使用的目标。我为此定义了一个使用replaceregexp:

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

我需要替换已经包含一组双引号的targetfile中的字符串;具体来说,我需要用 minlevel =&#34; Warn&#34; 替换 minlevel =&#34; Trace&#34; 。在TeamCity中,我使用以下内容调用Antfile:

  

-Doriginalstring =定义的MinLevel =&#34;痕量&#34;   -Dupdatedstring =定义的MinLevel =&#34;警告&#34;

但它忽略了双引号。 我确定这是逃避字符的组合,我不理解。 从TeamCity调用此方法的正确方法是什么? 谢谢 -

1 个答案:

答案 0 :(得分:0)

尝试将属性值括在双引号中,并使用反斜杠转义文字引号。

  

-Doriginalstring =&#34;中定义的MinLevel = \&#34;痕量\&#34;&#34; -Dupdatedstring =&#34;中定义的MinLevel = \&#34;警告\&#34;&#34;

类似于其中包含空格的值:

  

-Doriginalstring =&#34;中定义的MinLevel = \&#34;痕量\&#34;分贝= \&#34; M1Auth \&#34;&#34; -Dupdatedstring =&#34;中定义的MinLevel = \&#34;警告\&#34;分贝= \&#34; M1Auth \&#34;&#34;

另一种解决方案是将属性保存在文件中,并通过ant将其传递给-propertyfile <filename>命令(请参阅propertyfile任务和Running Apache Ant)。