java - 如何在ant的build.xml中设置-Dfile.encoding?




character-encoding javac (5)

我有iso-8859-1编码的java源文件。 当我运行ant时 ,我得到“警告:编码UTF-8的不可映射的字符”。 如果我运行ant -Dfile.encoding = iso-8859-1或者将encoding =“ISO-8859-1”添加到每个javac语句中,我可以避免这种情况。

有没有办法在build.xml中全局设置属性? <property name =“file.encoding”value =“ISO-8859-1”>不起作用。 我知道我可以添加一个foo = ISO-8859-1属性并为每个javac语句设置encoding =“$ {foo}”,但我试图避免这种情况。


Answers

Ant本身无法设置系统属性,但如果您真的想要,可以编写一个设置系统属性的java程序,并从Ant中执行该程序。


在更改构建文件之前,我收到如下的java编译错误。

ApplicationConstant.java:73: 错误:用于编码的不可映射字符ascii public static final String INVALID_MDTVERSION_SECOND = " This not compatible with the server’s Version";

我曾经遇到过这个错误,因为我曾经将ant java target作为:

 <javac encoding="ascii"...>

比我改变如下

<javac encoding="iso-8859-1" ...> 

这个问题得到了解决。


一些选择:

  1. -Dfile.encoding=iso-8859-1添加到ANT_OPTS环境变量中
  2. 使用<presetdef>设置所有<javac>调用的默认值

如果你有以特定方式编码的文件,最好告诉javac,而不是强迫整个JVM使用特定的编码。 出于这个原因, javac任务具有编码属性。

<javac srcdir="${src.dir}" destdir="${build.classes.dir}" encoding="iso-8859-1" />

但实际上,您应该将源文件转换为UTF-8。 在UTF-8中,一切都味道更好。 :)


这是一个有用的类,可以在包含/包含任意组合的范围内生成随机ints

import java.util.Random;

public class RandomRange extends Random {
    public int nextIncInc(int min, int max) {
        return nextInt(max - min + 1) + min;
    }

    public int nextExcInc(int min, int max) {
        return nextInt(max - min) + 1 + min;
    }

    public int nextExcExc(int min, int max) {
        return nextInt(max - min - 1) + 1 + min;
    }

    public int nextIncExc(int min, int max) {
        return nextInt(max - min) + min;
    }
}




java ant character-encoding javac