верить как
Java
Вам как разработчику достаточноmaven
Компиляция идет медленно, но из-за исторических нагрузок, привычек использования и других проблем временно невозможно переключиться на другие более быстрые инструменты сборки.Здесь автор познакомит вас с более быстрым инструментом сборки.maven
——maven-mvnd
.
вводить
maven-mvnd
даApache Maven
Команда узнала отGradle
иTakari
Более быстрые инструменты сборки появились позже.mvnd
встроенныйMaven
, и именно по этой причине мы можем беспрепятственноMaven
переключить наmvnd
(также не нужно устанавливать отдельноMaven
).
В дизайне, вmvnd
Один или несколько демонов будут созданы для обслуживания запросов на сборку для достижения эффекта параллельных сборок. Также вVM
выбор,mvnd
использовалGraalVM
заменить традиционныеJVM
,по сравнению сGraalVM
Запускается быстрее и занимает меньше памяти.
Согласно документации, то же, что и традиционныйMaven
по сравнению сmvnd
Имеет следующие преимущества:
- запустить сборку
JVM
Нет необходимости перезапускать для каждой сборки. -
Maven
Загрузчики классов для классов плагинов кэшируются в нескольких сборках, плагиныjars
будет прочитан и проанализирован только один раз. -
JVM
серединаJIT
Сгенерированный собственный код сохраняется. иMaven
по сравнению с,JIT
Компиляция занимает меньше времени. При повторных сборкахJIT
Оптимизированный код доступен сразу. Это касается не толькоMaven
плагины иMaven
Код для ядра, также работает отJDK
весь сам код.
по умолчанию,
mvnd
использовать несколькоCPU
Параллельные строительные блоки ядра. Количество используемых ядер находится по формулеMath.max(Runtime.getRuntime().availableProcessors() - 1, 1)
данный. Если ваше исходное дерево не поддерживает параллельные сборки, передайте в командной строке-T1
чтобы сделать вашу сборку серийной.
В то же время официальный24
Динамический граф, работающий на машине с ядром:
Установить
Для установки mvnd официальная документация дает очень подробный туториал, рекомендуется сначала прочитать его:GitHub.com/apache/wipe ве….
Автор прошел черезHomebrew
Установлено, проверено практикойmacOS m1
Установка не проблема. Однако следует отметить, что этот метод установленmvnd
Версия0.7.1
, а послеubuntu
иmacOS m1
Протестировал и обнаружил, что эта версия не поддерживаетJDK8
(Возможно просто у автора проблемы с компом), а официальный пример показываетJDK11
Это не проблема. существуетJDK8
бегатьmvnd
Команда выдает следующую ошибку:
~ % mvnd -v
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/mvndaemon/mvnd/client/DefaultClient has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:757)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:473)
at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
at java.lang.ClassLoader.loadClass(ClassLoader.java:419)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
at java.lang.ClassLoader.loadClass(ClassLoader.java:352)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:601)
Предполагается, что исполняемый файл, загруженный таким образом, имеет старшую версию.JDK
Скомпилированный, работающий на младших версиях не работает из-за отсутствия определенных методов или возможностей. Автору делать нечегоmaven-mvnd
Последняя версия примечаний к обновлению, найденная на одномClosed issues:Different java versions for mvnd and maven #512
, автор предлагает решение этой проблемыJAVA_HOME
Указанная версия установлена наJDK11
, и работаетmvnd
добавить параметры в команду-Dmaven.compiler.release=8
,Сейчас
mvnd -Dmaven.compiler.release=8 compile
Таким способом можно генерироватьJDK8
Соответствующий скомпилированный код.
за
issue #512
Автор отвечаетmvnd
Минимальная поддерживаемая версияJDK8
, но автор из0.5.2
Я начал пробовать и все равно сообщил о той же ошибке... Возможно, есть определенная проблема с компьютером автора, потому что я видел изображение результата, опубликованное другими, показывающее, чтоJDK8
Последняя версия также может быть установлена и использована. Кроме того, если это все еще не работает, возможно, мы можем сгенерировать исполняемые файлы, вручную скомпилировав исходный код.Конкретные шаги есть на официальном сайте.readme
Соответствующие шаги были приведены выше.
использовать
в использовании сMaven
Использование точно такое же, просто замените командуmvn
изменить наmvnd
Вот и все. В реальных измерениях авторская локальная машина отличается от традиционнойMaven
по сравнению сmvnd
Время, необходимое для сборки, является исходным1/2
.
Суммировать
Автор статьи изmaven-mvnd
Описано введение, установка, использование и некоторые аномалии.Если читатели хотят узнать больше подробностей, они могут прочитатьофициальная документация. и, возможно, усиленныйMaven
все еще не могу сравнитьGradle
, но в контексте исторического багажа, привычек использования и т.д.Maven
Укрепление на этот раз все еще очень ароматное.
Кроме того, мнения этой статьи представляют собой только личное мнение автора, если есть какие-либо ошибки, пожалуйста, вовремя укажите на ошибки.