Как настроить Maven на использование Java 1.7, не 1.6?

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для указания Maven конкретной версии Java, используйте параметры maven.compiler.source и maven.compiler.target в файле pom.xml следующим образом:

xml
Скопировать код
<properties>
  <maven.compiler.source>11</maven.compiler.source>
  <maven.compiler.target>11</maven.compiler.target>
</properties>

Замените 11 на необходимую вам версию Java. Тогда Maven скомпилирует ваш проект с использованием конкретной версии Java, при условии, что она предустановлена.

Кинга Идем в IT: пошаговый план для смены профессии

Установка версии Java с помощью JAVA_HOME

Maven определяет версию Java для сборки проекта посредством переменной окружения JAVA_HOME. Вы можете управлять выбором JDK для Maven, установив соответствующее значение:

Bash
Скопировать код
export JAVA_HOME=/usr/lib/jvm/java-11-oracle  # для Unix-систем
set JAVA_HOME=C:\Program Files\Java\jdk-11.0.1 # для Windows

Не забудьте сбросить значение JAVA_HOME после использования, чтобы предотвратить возможные проблемы в будущем.

Настройка сценария Maven

Вы можете отредактировать скрипты запуска Maven – mvn, mvn.bat или mvn.cmd, присвоив значение JAVA_HOME непосредственно в них.

Использование механизма toolchains.xml

Если вам нужно использовать различные JDK для разных проектов, можете установить конфигурацию в файле toolchains.xml. Это подходит для версии Maven 2.0.9 и выше. За деталями обращайтесь к документации Maven.

Создание псевдонимов для быстрого переключения

В Unix-подобных системах можно создать псевдонимы в .bashrc или .zshrc для ускорения переключения между разными версиями Java:

Bash
Скопировать код
alias mvn11='JAVA_HOME=/usr/lib/jvm/java-11-oracle mvn'

Эта команда создаёт псевдоним mvn11, который запускает Maven с Java 11.

Использование современных возможностей Maven

Начиная с 9-й версии плагина компилятора Java, представлен параметр <release>, позволяющий точно указать, что Maven должен использовать функционал определённой версии Java:

xml
Скопировать код
<properties>
  <maven.compiler.release>11</maven.compiler.release>
</properties>

Визуализация

Представьте, что версии Java – это инструменты, а Maven – задача, требующая инструмент с указанными параметрами:

Markdown
Скопировать код
| Версия Java | Размер инструмента |
| ----------- | ------------------ |
| Java 8      | 8 мм               |
| Java 11     | 11 мм              |
| Java 17     | 17 мм              |

Выбор версии Java в Maven схож с подбором инструмента подходящего размера:
xml

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


Правильный выбор гарантирует, что Maven выполняет работу без несоответствий и всяческих костылей.

## Конкретные сценарии: Maven и версии Java

### Сборка с использованием более ранней версии JDK

Если ваш проект всё ещё использует Java 1.7 в эпоху Java 1.8, укажите JDK 1.7 следующим образом:
xml

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


### Проверка версии Java, используемой Maven

Чтобы узнать, с какой версией Java работает Maven, запустите следующую команду:
bash mvn -version

В выводе будет указана используемая в данный момент версия Java.

### Использование .mavenrc для персональной настройки

Для указания `JAVA_HOME` с уровнем доступа конкретного пользователя, не затрагивая системные настройки, создайте файл `~/.mavenrc`:
bash export JAVA_HOME=/opt/jdk/java-11-oracle

```

Обеспечение единообразия сборок с помощью Maven Wrapper

Для синхронизации сред сборки между разработчиками и CI-серверами, включите Maven Wrapper (mvnw) в систему управления версиями вашего проекта.