Edited at
TISDay 1

MavenをJava 8で動かしつつコンパイルはJava 6、テストはJava 11で行う

フレームワークを作ったりしていると後方互換の関係でJava 6でコンパイルしたいことがあります。

また、新規案件では古いJDKとか使わないのでコンパイルはJava 6でしたとしてもテストはJava 6・7・8・11で実施したかったりします。

最近のMavenはJava 6では動かないんですけど、工夫をすればMaven自体はJava 8で動かしつつコンパイルはJava 6、テストはJava 11で行うといったことが可能です。

maven-compiler-pluginexecutablejavacコマンドを指定することで任意のJDKでコンパイルができます。

それからmaven-surefire-pluginjvmjavaコマンドを指定することで任意のJDKでテストができます。

いずれもシステムプロパティで設定できます。

コマンド例はこんな感じ。

export JAVA_HOME=/path/to/jdk8

mvn -Dmaven.compiler.executable=/path/to/jdk6/bin/javac \
-Dmaven.compiler.fork=true \
-Djvm=/path/to/jdk11/bin/java \
test


参考