web-dev-qa-db-ja.com

antのbuild.xml内で-Dfile.encodingを設定するにはどうすればよいですか?

Java iso-8859-1エンコーディングのソースファイルがあります。antを実行すると、「警告:UTF-8エンコーディング用のマッピングできない文字」が表示されます。 ant -Dfile.encoding = iso-8859-1を実行するか、各javacステートメントにencoding = "ISO-8859-1"を追加すると、これを回避できます。

Build.xml内でプロパティをグローバルに設定する方法はありますか? <property name = "file.encoding" value = "ISO-8859-1">は機能しません。 foo = ISO-8859-1プロパティを追加し、各javacステートメントにencoding = "$ {foo}"を設定できることは知っていますが、それを回避しようとしています。

47
neu242

いくつかのオプション:

  1. -Dfile.encoding=iso-8859-1環境変数にANT_OPTSを追加します
  2. <presetdef>を使用して、すべての<javac>呼び出しのデフォルトを設定します
33
carej

特定の方法でエンコードされたファイルがある場合は、JVM全体に特定のエンコードを使用するように強制するのではなく、javacに伝えるのがおそらく最善です。 javac task には、この理由でエンコード属性があります。

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

しかし、実際には、ソースファイルをUTF-8に変換するだけです。すべてがUTF-8の方が好みです。 :)

71

ビルドファイルを変更する前に、以下のような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" ...> 

この問題は解決されました。

3
Laxman G

Ant自体はシステムプロパティを設定できませんが、本当に必要な場合は、システムプロパティを設定するJavaプログラムを記述し、Ant内から実行できます。

1
skaffman