我有一个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调用此方法的正确方法是什么? 谢谢 -
答案 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)。