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}"を設定できることは知っていますが、それを回避しようとしています。
いくつかのオプション:
-Dfile.encoding=iso-8859-1
環境変数にANT_OPTS
を追加します<presetdef>
を使用して、すべての<javac>
呼び出しのデフォルトを設定します特定の方法でエンコードされたファイルがある場合は、JVM全体に特定のエンコードを使用するように強制するのではなく、javacに伝えるのがおそらく最善です。 javac task には、この理由でエンコード属性があります。
<javac srcdir="${src.dir}" destdir="${build.classes.dir}" encoding="iso-8859-1" />
しかし、実際には、ソースファイルをUTF-8に変換するだけです。すべてがUTF-8の方が好みです。 :)
ビルドファイルを変更する前に、以下のような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内から実行できます。