Как настроить Maven на использование Java 1.7, не 1.6?
Быстрый ответ
Для указания Maven конкретной версии Java, используйте параметры maven.compiler.source
и maven.compiler.target
в файле pom.xml
следующим образом:
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
Замените 11
на необходимую вам версию Java. Тогда Maven скомпилирует ваш проект с использованием конкретной версии Java, при условии, что она предустановлена.
Установка версии Java с помощью JAVA_HOME
Maven определяет версию Java для сборки проекта посредством переменной окружения JAVA_HOME
. Вы можете управлять выбором JDK для Maven, установив соответствующее значение:
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:
alias mvn11='JAVA_HOME=/usr/lib/jvm/java-11-oracle mvn'
Эта команда создаёт псевдоним mvn11
, который запускает Maven с Java 11.
Использование современных возможностей Maven
Начиная с 9-й версии плагина компилятора Java, представлен параметр <release>
, позволяющий точно указать, что Maven должен использовать функционал определённой версии Java:
<properties>
<maven.compiler.release>11</maven.compiler.release>
</properties>
Визуализация
Представьте, что версии Java – это инструменты, а Maven – задача, требующая инструмент с указанными параметрами:
| Версия Java | Размер инструмента |
| ----------- | ------------------ |
| Java 8 | 8 мм |
| Java 11 | 11 мм |
| Java 17 | 17 мм |
Выбор версии Java в Maven схож с подбором инструмента подходящего размера:
<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 следующим образом:
<properties> <maven.compiler.source>1.7</maven.compiler.source> <maven.compiler.target>1.7</maven.compiler.target> </properties>
### Проверка версии Java, используемой Maven
Чтобы узнать, с какой версией Java работает Maven, запустите следующую команду:
В выводе будет указана используемая в данный момент версия Java.
### Использование .mavenrc для персональной настройки
Для указания `JAVA_HOME` с уровнем доступа конкретного пользователя, не затрагивая системные настройки, создайте файл `~/.mavenrc`:
```
Обеспечение единообразия сборок с помощью Maven Wrapper
Для синхронизации сред сборки между разработчиками и CI-серверами, включите Maven Wrapper (mvnw
) в систему управления версиями вашего проекта.