如何在Ant echo中转义特殊字符(在xml中无效)?

yeg*_*256 1 java ant

我想在Ant中这样做:

<echo message="&#27;[44;1;37mSuccess!&#27;[m" />
Run Code Online (Sandbox Code Playgroud)

但它不起作用:

BUILD FAILED
./build.xml:92: Character reference "&#
Run Code Online (Sandbox Code Playgroud)

怎么做?

Jar*_*zek 5

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

JavaScript的

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

native2ascii的

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

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

属性文件

最后,您可能会在文件中将不幸的字符串设为常量:

<property file="prop.txt" />
<echo>myEsc:${myEsc}</echo>
Run Code Online (Sandbox Code Playgroud)

prop.txt内容是:

myEsc=\u001b
Run Code Online (Sandbox Code Playgroud)