如何在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语句,但是我试图避免这种情况。

几个选项:

  1. -Dfile.encoding=iso-8859-1添加到您的ANT_OPTS环境variables中
  2. 使用<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中执行它。

Interesting Posts