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

Native Maven

Запускайте сборки Apache Maven 4 через elide mvn без отдельной установки Maven или JDK: варианты для обычных проектов и Spring Boot, режимы и вывод.

На этой странице

elide mvn запускает сборки Apache Maven 4 без отдельной установки Maven или JDK.

Запуск сборки

elide mvn -- package
elide mvn -- -f app/pom.xml clean install
elide mvn -- --version

Всё после -- передаётся Maven, кроме --flavor, --mode, --yes и --porcelain, которые обрабатывает elide mvn. Корень проекта — ближайший каталог .mvn выше -f/--file или рабочего каталога.

Первый запуск

Каждый вариант скачивается один раз, с запросом при первом использовании:

Native Maven component 'generic' is not installed. Download it now? [Y/n]

Образы устанавливаются в lib/maven/bin/ в домашнем каталоге Elide. Неинтерактивные сеансы скачивают без вопросов; в терминале --yes пропускает запрос:

elide mvn -- --yes package
ПлатформаАрхитектура
Linuxx86_64, aarch64
macOSaarch64
Windowsx86_64

Варианты

Вариант — это набор плагинов Maven, которые работают нативно.

ВариантПлагиныДля чего
genericСтандартный жизненный цикл: clean, resources, compiler, surefire, jar, install, deployОбычные проекты на Java или Kotlin
spring@4.1.0Всё, что использует проект Boot 4.1 из Spring InitializrSpring Boot 4.1.x
spring@4.0.7То же для Boot 4.0Spring Boot 4.0.x

Elide выбирает вариант spring, совпадающий с major.minor версии родителя spring-boot-starter-parent или spring-boot-maven-plugin в pom.xml (Boot 4.1.3 → spring@4.1.0). Иначе, в том числе при заполнителях ${…}, используется generic. Чтобы выбрать вариант явно:

elide mvn -- --flavor spring@4.1.0 package
elide mvn -- --flavor=spring@4.0.7 -f app/pom.xml install

Режимы

--mode=<value> (или -Dnmvn.mode=<value>; флаг имеет приоритет) определяет, что запускает плагины вне варианта:

elide mvn -- --mode=mixed package
РежимПоведение
native (по умолчанию)Работают только плагины варианта. Отсутствующий плагин приводит к ранней ошибке с названием варианта, в котором он есть, и подсказкой --mode=mixed.
mixedПлагины варианта работают нативно; остальные цели выполняются по одной на JVM в том же процессе.
legacyВся сборка выполняется как обычный Apache Maven на JVM внутри процесса, в качестве эталона.

mixed и legacy при первом использовании скачивают дистрибутив Maven в lib/maven/. Отдельный JDK не нужен.

Ограничения режима mixed

  • Каждая делегированная цель добавляет около 0,2 с после однократного запуска. Если делегируется большинство целей, выберите вариант, в котором больше их плагинов.
  • Артефакты делегированной цели не прикрепляются к сеансу. Если плагина jar нет в варианте, запускайте package, а не install или deploy.
  • Конфигурация плагинов из командной строки передаётся делегированным целям только как свойства -D.

Вывод

В терминале отображается строка состояния (плагин, цель, версия, модуль), затем сводка по фазам и время сборки; при ошибке выводится полный журнал Maven. --porcelain транслирует собственный вывод Maven, как и подробные, отладочные и неинтерактивные запуски:

elide mvn -- --porcelain package

Проверка установленного образа

<elide-home>/lib/maven/bin/nmvn-generic --info
<elide-home>/lib/maven/bin/nmvn-spring-4.1.0 --info=plugins

--info выводит вариант, редакцию и плагины; --info=plugins, --info=flavor или --info=variant выводит только соответствующие сведения.

Совместимость

Native Maven читает тот же pom.xml и следует тому же жизненному циклу, что и Apache Maven 4. Поддержка плагинов ограничена опубликованными вариантами. Компиляция выполняется внутри процесса; плагины, которые запускают компилятор в отдельном процессе, используют javac из Elide.

Была ли эта страница полезной?