Подтвердить что ты не робот

Как скомпилировать и запустить мои модульные тесты Maven для Java 11, в то время как мой код скомпилирован для более старой версии Java 8

Я хочу использовать синтаксис Java 11 в своих модульных тестах, но мой "основной" код должен быть скомпилирован для Java 8, поскольку в моей производственной среде установлен только JDK 8.

Есть ли способ сделать это с помощью maven-compiler-plugin? На моем сервере Jenkins установлена Java 11.

Я приму на себя риск того, что смогу случайно использовать специфические функции Java 11 в своем производственном коде.

4b9b3361

Ответ 1

В 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>

Ответ 2

Немного более краткая версия ответа mkrakhin. Вы можете установить source, target, testSource и 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>