web-dev-qa-db-ja.com

旧バージョンのJava 8向けにコードをコンパイルしながら、Java 11のMavenユニットテストをコンパイルして実行する方法

ユニットテストでJava 11構文を使用したいが、私のメインコードはJava 8でコンパイルする必要がある8個設置。

Maven-compiler-pluginでこれを行う方法はありますか? JenkinsサーバーにJava 11がインストールされています。

私は、プロダクションコードでJava 11特定の機能を誤って使用する可能性があるというリスクを受け入れます。

30
rjdkolb

Mavenでは、コンパイルとtestCompileの目標は異なります。また、MavenにはtestCompileのパラメーター(testTargetおよびtestSource)さえあります。そう:

<plugin>
    <groupId>org.Apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.0</version>
    <configuration>
        <source>1.7</source>
        <target>1.7</target>
        <testSource>1.8</testSource>
        <testTarget>1.8</testTarget>
    </configuration>
</plugin>
37
mkrakhin

Mkrakhinの回答の少し簡潔なバージョン sourcetargettestSource および testTarget を設定できます。

  <properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>

    <maven.compiler.testSource>11</maven.compiler.testSource>
    <maven.compiler.testTarget>11</maven.compiler.testTarget>
  </properties>
</project>
2
rjdkolb