周末被maven-mvnd刷屏了,所以也下载了一个mvnd来体验一下。虽然测试数据是基于我本地的项目,不具有普遍性和权威性,但足以说明问题。它的测试结果远远超出了我的预期,一起来看看吧。什么是mvnd?mvnd是MavenDaemon的缩写,翻译成中文就是Maven守护进程。mvnd是apache/maven的子项目。它不是一个全新的构建工具,而是maven的扩展。它内置了maven,其实现原理是构建一个或多个maven守护进程来执行构建服务。mvnd概述1.mvnd的目标是使用Gradle和Takari的已知技术提供更快的Maven构建。Gradle是一个基于ApacheAnt和ApacheMaven概念的项目自动化构建工具。Gradle构建脚本是使用Groovy或Kotlin领域特定语言而不是传统的XML编写的。Gradle最大的优势是比传统的Maven构建速度更快。Takari是maven-wrapper的核心。大多数开源项目都提供了wrapper,方便用户在不安装maven的情况下快速构建项目。2.mvnd内嵌了Maven,不需要单独安装Maven。3.一个守护进程实例可以服务来自mvnd客户端的多个连续请求。4.mvnd客户端使用GraalVM构建本地可执行文件,与启动传统JVM相比,启动速度更快,占用内存更少。5.如果mvnd没有空闲守护进程来服务构建请求,则可以并行生成多个守护进程。mvnd优点介绍mvnd有以下优点:用于运行构建的JVM不需要每次构建都重新启动。保存Maven插件类的类加载器跨构建缓存。因此,插件jar文件只被读取和解析一次。(不缓存Maven插件的快照版本。)由JVM中的即时(JIT)编译器生成的本机代码也被保留,并且JIT编译比常规Maven花费的时间更少。在重复构建期间,JIT优化代码立即可用,不仅适用于Maven插件和MavenCore的代码,而且适用于JDK本身的所有代码。mvnd安装mvnd支持Window、Linux、Macos,本文以Windows安装为例。1、下载并解压mvnd下载地址:https://github.com/apache/maven-mvnd/releases选择最新版本的Windows资源包,如下图:下载完成后,解压到一个本地目录,如下图:2、配置环境变量,将mvnd解码包的执行目录bin配置到系统变量path中。操作步骤如下图所示:3、测试mvnd的安装接下来打开命令行窗口,使用“mvnd-version”查看mvnd是否正常安装成功,如下图:打印出相关版本信息,则表示安装成功。mvnVSmvnd性能测试接下来是本文的重头戏,使用我本地的一个项目来测试mvn和mvnd的性能差距。我的电脑配置如下:一、mvn性能测试传统的maven执行结果如下图所示:打包我本地的一个项目,跳过单元测试。mvn性能测试结果:1.312秒。2.mvnd性能测试mvnd性能测试结果为0.154秒。总结本文介绍mvnd,一个内置maven但执行效率比maven快很多的工具。上手非常简单,对于用户来说,只需将之前maven命令的开头由“mvn”改为“mvnd”即可。mvnd构建一个或多个maven守护进程,使用新的VM引擎,并加入缓存和JIT优化,大大提高了maven项目的构建速度,也让我们看到了一个可以与Gradle抗衡的系统希望我继续关注这个项目,希望它发展的越来越好。参考资料:https://github.com/apache/maven-mvnd是非自评,名誉听人,得失看数字。公众号:Java面试真题解析
