1

我正在尝试在 Ant 中执行此操作:

<echo message="&#27;[44;1;37mSuccess!&#27;[m" />

但它不起作用:

BUILD FAILED
./build.xml:92: Character reference "&#

怎么做?

4

3 回答 3

5

XML 内容中的 0x1B 字符无效 ( Invalid Characters in XML )。所以你需要一些解决方法。我会使用 javascript 解决方案,但我还提供了 2 个额外的解决方案:

javascript

<script language="javascript">
  project.setNewProperty("esc", "\u001b");
</script>
<echo>${esc}</echo>

native2ascii

如果你想在一个文件中输出,那么你可以先使用 java escape 输出它\u001b,然后使用反向Native2Ascii例程转换它。无论选择何种编码,它总是解码\u序列。

<echo file="a.enc">\u001b</echo>
<native2ascii includes="a.enc" ext=".txt" dest="${basedir}"
              encoding="iso-8859-1" reverse="true" />

属性文件

最后,您可能在文件中有不幸的字符串常量:

<property file="prop.txt" />
<echo>myEsc:${myEsc}</echo>

prop.txt内容是:

myEsc=\u001b
于 2012-10-29T17:44:28.547 回答
2

只需使用 CDATA :

<project>

 <echo><![CDATA[
  &#27;[44;1;37mSuccess!&#27;[m
  ]]>
 </echo>

</project>
于 2012-10-29T22:02:37.917 回答
0

& 是 ant 中的一个特殊字符,所以你应该用 ' 替换它

<echo message="&amp;#27;[44;1;37mSuccess!&amp;#27;[m" />
于 2012-10-29T13:53:28.587 回答