フレームワークを作ったりしていると後方互換の関係でJava 6でコンパイルしたいことがあります。
また、新規案件では古いJDKとか使わないのでコンパイルはJava 6でしたとしてもテストはJava 6・7・8・11で実施したかったりします。
最近のMavenはJava 6では動かないんですけど、工夫をすればMaven自体はJava 8で動かしつつコンパイルはJava 6、テストはJava 11で行うといったことが可能です。
maven-compiler-plugin
のexecutable
でjavac
コマンドを指定することで任意のJDKでコンパイルができます。
それからmaven-surefire-plugin
のjvm
でjava
コマンドを指定することで任意の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