Maven のプロジェクトで、ソースコードやドキュメント出力(Javadocなど)のエンコーディングを設定する方法を書いていきます。
設定方法
下のように、pom.xml
のプロパティで設定します。
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> </properties>
プロパティの位置
プロパティタグ <properties>
の階層は、プロジェクトタグ <project>
の下になります。
<project> ... <properties> ... </properties> ... </project>
※ 上のプロジェクトタグは、属性を省略しています。
プロパティで設定するメリット
プロパティで設定すると、プラグインの文字コード設定が省略できて便利です。プラグインで文字コードを指定すると、設定が複数回になる可能性があります。
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <version>3.3.0</version> <configuration> <encoding>UTF-8</encoding> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.10.1</version> <configuration> <encoding>UTF-8</encoding> </configuration> </plugin>
プラグインが参照する値
以下のプラグインは、project.build.sourceEncoding
の文字コードを使用します。
maven-resources-plugin
maven-compiler-plugin
maven-javadoc-plugin
以下のプラグインは、project.reporting.outputEncoding
の文字コードを使用します。
maven-javadoc-plugin
エンコーディングを設定しない場合
エンコーディングを設定していないと、Maven 実行時に次の警告が出ました。
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ sample-hello --- [WARNING] Using platform encoding (MS932 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] Copying 0 resource [INFO] [INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ sample-hello --- [INFO] Changes detected - recompiling the module! [WARNING] File encoding has not been set, using platform encoding MS932, i.e. build is platform dependent! [INFO] Compiling 1 source file to C:\Users\m\eclipse-workspace\sample-hello\target\classes