Web系開発メモ

Java, C#, HTML, CSS, JavaScript のことなどを書いてます。

Maven エンコーディングの設定方法(ビルド時の文字コード)

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

参考文献