如何在ant的build.xml中设置-Dfile.encoding?
我有ISO-8859-1编码的java源文件。 当我运行ant ,我得到“警告:编码UTF-8的不可映射的字符”。 如果我运行ant -Dfile.encoding = iso-8859-1或为每个javac语句添加编码=“ISO-8859-1” ,我可以避免这种情况。
有没有办法在build.xml中全局设置属性? <property name =“file.encoding”value =“ISO-8859-1”>不起作用。 我知道我可以添加foo = ISO-8859-1属性,并将encoding =“$ {foo}”设置为每个javac语句,但是我试图避免这种情况。
几个选项:
- 将
-Dfile.encoding=iso-8859-1
添加到您的ANT_OPTS
环境variables中 - 使用
<presetdef>
设置所有<javac>
调用的默认值
如果你有以特定方式编码的文件,最好告诉javac,而不是强制整个JVM使用特定的编码。 由于这个原因, javac任务有一个编码属性。
<javac srcdir="${src.dir}" destdir="${build.classes.dir}" encoding="iso-8859-1" />
但是,真的,你应该把源文件转换为UTF-8。 UTF-8中的所有东西都尝起来更美味。 🙂
在更改构build文件之前,我得到像下面的java编译错误。
ApplicationConstant.java:73: 错误:用于编码的不可映射字符ascii public static final String INVALID_MDTVERSION_SECOND = " This not compatible with the server’s Version";
我遇到这个错误时,我曾经有ant的Java目标为:
<javac encoding="ascii"...>
比我更改如下
<javac encoding="iso-8859-1" ...>
这个问题解决了。
Ant本身不能设置系统属性,但是如果你真的想,你可以编写一个设置系统属性的java程序,并在Ant中执行它。