Перейти к основному содержимому

Установка версии Java в Maven

· 3 мин. чтения

Задача: Медиана двух отсортированных массивов

Даны два отсортированных массива размерами n и m. Найдите медиану слияния этих двух массивов.
Временная сложность решения должна быть O(log(m + n)) ...

ANDROMEDA

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 .