Более быстрый Maven уже здесь, а его производительность на 180 % выше.

Java задняя часть
Более быстрый Maven уже здесь, а его производительность на 180 % выше.

На выходных меня взломал maven-mvnd, поэтому я также скачал mvnd, чтобы испытать его. Хотя тестовые данные основаны на моем локальном проекте, они не являются универсальными и авторитетными, но их достаточно для иллюстрации проблемы. Результаты его испытаний намного превзошли мои ожидания, давайте посмотрим.

Что такое мвнд?

mvnd — это аббревиатура от Maven Daemon, в переводе на китайский — демон Maven. ​

mvnd — это подпроект apache/maven, это не новый инструмент сборки, а расширение maven. Он имеет встроенный maven, и принцип его реализации заключается в создании одного или нескольких демонов maven для выполнения служб сборки.

обзор mvnd

1. Цель mvnd — обеспечить более быструю сборку Maven с использованием методов, известных Gradle и Takari.

Gradle — это инструмент для автоматизации проектов, основанный на концепциях Apache Ant и Apache Maven. Сценарии сборки Gradle написаны на доменном языке Groovy или Kotlin, а не на традиционном XML. Самым большим преимуществом Gradle является то, что он быстрее, чем традиционные сборки Maven. Такари является ядром maven-wrapper.Большинство проектов с открытым исходным кодом предоставляют warpper, чтобы облегчить пользователям быструю сборку проектов без установки maven. ​

2. Maven встроен в mvnd, поэтому нет необходимости устанавливать Maven отдельно.

3. Экземпляр демона может обслуживать несколько последовательных запросов от клиентов mvnd.

4. Клиент mvnd использует GraalVM для создания собственных исполняемых файлов, которые запускаются быстрее и используют меньше памяти, чем запуск традиционной JVM. ​

5. Если у mvnd нет бездействующих демонов для обслуживания запроса на сборку, несколько демонов могут запускаться параллельно.

Знакомство с преимуществами mvnd

mvnd имеет следующие преимущества:

  1. JVM, используемая для запуска сборки, не требует перезапуска для каждой сборки.
  2. Загрузчики классов, содержащие классы подключаемых модулей Maven, кэшируются в нескольких сборках. Поэтому файл jar плагина читается и анализируется только один раз. (Версии моментальных снимков плагина Maven не будут кэшироваться)
  3. Собственный код, сгенерированный JIT-компилятором в JVM, также сохраняется, и JIT-компиляция занимает меньше времени, чем обычный Maven. JIT-оптимизированный код сразу же доступен во время повторных сборок не только для кода из Maven Plugin и Maven Core, но и для всего кода из самого JDK.

mvnd установить

mvnd поддерживает Windows, Linux и Macos.В этой статье в качестве примера рассматривается установка Windows.

1. Скачайте и разархивируйте mvnd

ссылка для скачивания:GitHub.com/apache/wipe ве…Выберите последнюю версию пакета ресурсов Windows, как показано на изображении ниже:image.png

После завершения загрузки разархивируйте его в локальный каталог, как показано на следующем рисунке:image.png

2. Настройте переменные среды

Настройте каталог выполнения пакета декодирования mvnd на путь системной переменной.Этапы операции показаны на следующем рисунке:image.png image.png

3. Тестовая установка mvnd

Затем откройте окно командной строки и используйте «mvnd -version», чтобы проверить, нормально ли установлен mvnd, как показано на следующем рисунке:image.pngЕсли напечатана соответствующая информация о версии, установка прошла успешно.

тест производительности mvn против mvnd

Следующим важным моментом этой статьи является использование одного из моих локальных проектов для проверки разрыва в производительности между mvn и mvnd. ​

Конфигурация моего компьютера следующая:image.png

1.тест производительности mvn

Традиционный результат выполнения maven показан на следующем рисунке:

图片

Упаковка одного из моих локальных проектов без модульных тестов.

Результат теста производительности mvn: 3,107 секунды.

2. Тест производительности mvnd

图二

Результат теста производительности mvnd 1,721 секунды.

Суммировать

В этой статье рассказывается о mvnd, инструменте со встроенным maven, который работает намного быстрее, чем maven. Начать очень сложно.Для пользователей это просто вопрос изменения начала предыдущей команды maven с «mvn» на «mvnd».

mvnd строит один или несколько демонов maven, использует новый движок VM и добавляет кэширование и JIT-оптимизацию, что значительно повышает скорость построения maven-проектов, а также позволяет нам увидеть машину, которая может конкурировать с Gradle.Я буду продолжать платить внимание на этот проект и надеюсь, что он будет развиваться все лучше и лучше. ​

Использованная литература:GitHub.com/apache/wipe ве…

Самостоятельно судить о правильном и неправильном, слушать других и подсчитывать выгоды и потери.

Официальная учетная запись: Сообщество китайского языка Java