1. Обзор
В этом кратком руководстве мы покажем, как установить версию Java в Maven.
Прежде чем двигаться дальше, мы можем проверить JDK-версию Maven по умолчанию. Выполнение команды mvn -v
покажет версию Java, в которой работает Maven.
2. Используйте плагин компилятора
Мы можем указать нужную версию Java в плагине компилятора .
2.1. Плагин компилятора
Первый вариант — установка версии в свойствах плагина компилятора:
<properties>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.source>1.8</maven.compiler.source>
</properties>
Компилятор Maven принимает эту команду с версиями – target
и – source .
Если мы хотим использовать языковые функции Java 8, параметр – source
должен быть установлен на 1.8
.
Кроме того, чтобы скомпилированные классы были совместимы с JVM 1.8, целевое
значение должно быть равно 1,8
.
Значение по умолчанию для них обоих — версия 1.6.
Кроме того, мы можем настроить плагин компилятора напрямую:
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
Плагин maven-compiler-plugin
также имеет дополнительные свойства конфигурации, которые позволяют нам лучше контролировать процесс компиляции за пределами исходной
и целевой
версий.
2.2. Java 9 и выше
Кроме того, начиная с версии JDK 9, мы можем использовать новую опцию командной строки -release .
Этот новый аргумент автоматически настроит компилятор для создания файлов классов, которые будут связаны с реализацией данной версии платформы.
По умолчанию параметры -source
и -target
не гарантируют кросс-компиляцию.
Это означает, что мы не можем запускать наше приложение на старых версиях платформы. Кроме того, для компиляции и запуска программ для более старых версий Java нам также необходимо указать параметр -bootclasspath
.
Для правильной кросс-компиляции новая опция -release
заменяет три флага: -source,
-target и -bootclasspath
.
После преобразования наших примеров мы можем объявить следующее для свойств плагина:
<properties>
<maven.compiler.release>7</maven.compiler.release>
</properties>
А для maven-compiler-plugin
начиная с версии 3.6 вот что мы можем написать:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<release>7</release>
</configuration>
</plugin>
Обратите внимание, что мы можем добавить версию Java в новый атрибут <release> .
В этом примере мы компилируем наше приложение для Java 7.
Более того, нам не нужен JDK 7, установленный на нашей машине. Java 9 уже содержит всю информацию для связывания новых функций языка с JDK 7.
3. Спецификация пружинной загрузки
Приложения Spring Boot указывают версию JDK внутри тегов свойств в файле
pom.xml
.
Во- первых, нам нужно добавить spring-boot-starter-parent
в качестве родителя нашего проекта:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
</parent>
Этот родительский POM позволяет нам настраивать плагины по умолчанию и несколько свойств, включая версию Java — по умолчанию версия Java — 1.8
.
Однако мы можем переопределить версию родителя по умолчанию, указав свойство java.version
:
<properties>
<java.version>9</java.version>
</properties>
Установив свойство java.version
, мы объявляем, что исходная и целевая версии Java равны 1.9
.
Прежде всего, мы должны помнить, что это свойство является спецификацией Spring Boot. Кроме того, начиная с Spring Boot 2.0, Java 8 является минимальной версией.
Это означает, что мы не можем использовать или настраивать Spring Boot для более старых версий JDK.
4. Вывод
В этом кратком руководстве продемонстрированы возможные способы установки версии Java в нашем проекте Maven.
Вот краткое изложение основных выводов:
- Использование
<java.version>
возможно только с приложением Spring Boot. - Для простых случаев лучше всего подходят свойства
maven.compiler.source
иmaven.compiler.target .
- Наконец, чтобы иметь больше контроля над процессом компиляции, используйте настройки конфигурации
плагина maven-compiler-plugin .