456

マルチモジュールの Maven プロジェクトを実行するmaven installと、常に次の出力が得られます。

[WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent!

それで、私は少しグーグルで調べましたが、見つけることができるのは、追加する必要があることだけです:

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

...私のpom.xmlに。しかし、それはすでにそこにあります(親にありpom.xmlます)。

<encoding>maven-resources-plugin または maven-compiler-plugin を設定しても修正されません。

だから問題は何ですか?

4

6 に答える 6

663

OK、問題が見つかりました。

いくつかのレポート プラグインを使用しています。failsafe-maven-plugin私が見つけたのドキュメントでは、<encoding>構成はもちろん${project.reporting.outputEncoding}、デフォルトで使用されています。

そのため、プロパティを要素の子要素として追加したところproject、すべて問題ありません。

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>

http://maven.apache.org/general.html#encoding-warningも参照してください

于 2010-06-10T20:17:39.940 に答える
55

これは、上記の解決策で解決されないスカンディック レターの問題に誰かが遭遇した場合、以前のものに追加されます。

Java ソース ファイルにスカンディック文字が含まれている場合は、コンパイルに使用される Javaによって正しく解釈される必要があります。(例: 定数で使用されるスカンディック文字)

ファイルが UTF-8 で保存され、Maven が UTF-8 を使用するように構成されている場合でも、Maven が使用するシステム Java はシステムのデフォルトを使用します (例: Windows: cp1252)。

これは、maven を介してテストを実行している場合にのみ表示されます (テストでこれらの定数の値を出力する可能性があります。出力されたスカンディック文字は '< ?>' と表示されます)。適切にテストされていない場合、コンパイル結果としてクラス ファイルが破損し、見過ごされた。

これを防ぐには、コンパイルに使用する Java を UTF-8 エンコーディングを使用するように設定する必要があります。maven pom.xml にエンコーディング設定があるだけでは不十分です。環境変数を設定する必要があります: JAVA_TOOL_OPTIONS = -Dfile.encoding=UTF8

また、Windows で Eclipse を使用している場合は、これに加えて使用するエンコーディングを設定する必要がある場合があります (Eclipse 経由で個別のテストを実行する場合)。

于 2015-02-12T06:31:05.907 に答える
1

私の場合maven-dependency-plugin、問題を解決するために次のプロパティを追加する必要があったため、を使用していました。

  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

Apache Maven Resources プラグイン / 文字エンコード スキームの指定を参照してください。

于 2018-02-17T23:41:01.523 に答える