На выходных меня взломал 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 имеет следующие преимущества:
- JVM, используемая для запуска сборки, не требует перезапуска для каждой сборки.
- Загрузчики классов, содержащие классы подключаемых модулей Maven, кэшируются в нескольких сборках. Поэтому файл jar плагина читается и анализируется только один раз. (Версии моментальных снимков плагина Maven не будут кэшироваться)
- Собственный код, сгенерированный JIT-компилятором в JVM, также сохраняется, и JIT-компиляция занимает меньше времени, чем обычный Maven. JIT-оптимизированный код сразу же доступен во время повторных сборок не только для кода из Maven Plugin и Maven Core, но и для всего кода из самого JDK.
mvnd установить
mvnd поддерживает Windows, Linux и Macos.В этой статье в качестве примера рассматривается установка Windows.
1. Скачайте и разархивируйте mvnd
ссылка для скачивания:GitHub.com/apache/wipe ве…Выберите последнюю версию пакета ресурсов Windows, как показано на изображении ниже:
После завершения загрузки разархивируйте его в локальный каталог, как показано на следующем рисунке:
2. Настройте переменные среды
Настройте каталог выполнения пакета декодирования mvnd на путь системной переменной.Этапы операции показаны на следующем рисунке:
3. Тестовая установка mvnd
Затем откройте окно командной строки и используйте «mvnd -version», чтобы проверить, нормально ли установлен mvnd, как показано на следующем рисунке:Если напечатана соответствующая информация о версии, установка прошла успешно.
тест производительности mvn против mvnd
Следующим важным моментом этой статьи является использование одного из моих локальных проектов для проверки разрыва в производительности между mvn и mvnd.
Конфигурация моего компьютера следующая:
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