Как скомпилировать и запустить мои модульные тесты Maven для Java 11, в то время как мой код скомпилирован для более старой версии Java 8
Я хочу использовать синтаксис Java 11 в своих модульных тестах, но мой "основной" код должен быть скомпилирован для Java 8, поскольку в моей производственной среде установлен только JDK 8.
Есть ли способ сделать это с помощью maven-compiler-plugin? На моем сервере Jenkins установлена Java 11.
Я приму на себя риск того, что смогу случайно использовать специфические функции Java 11 в своем производственном коде.
Ответы
Ответ 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>