mvnd - the Maven Daemon

一、什么是mvnd

  maven-mvnd是Apache Maven团队借鉴了Gradle和Takari技术后提供的更快的maven构建。

 

  架构概述:

    ①:mvnd 内嵌了 Maven(所以不需要单独安装 Maven)

    ②:实际的构建发生在一个长期存在的后台进程中,也就是守护进程

    ③:一个守护进程实例可以服务来自 mvnd 客户端的多个连续请求

    ④:mvnd 客户端是使用 GraalVM 构建的本机可执行文件。与启动传统 JVM 相比,它启动速度更快,占用的内存更少

    ⑤:如果没有空闲守护程序来处理构建请求,则可以并行生成多个守护程序

 

  这种架构带来了以下优势:

    ①:用于运行实际构建的 JVM 不需要为每个构建重新启动

    ②:持有 Maven 插件类的类加载器缓存在多个构建中。因此,插件 jars 只被读取和解析一次。 SNAPSHOT 版本的 Maven 插件没有被缓存

    ③:JVM 中的实时 (JIT) 编译器生成的本机代码也被保留。与库存 Maven 相比,JIT 编译花费的时间更少。在重复构建期间,JIT 优化代码立即可用。这不仅适用于来自 Maven 插件和 Maven Core 的代码,也适用于来自 JDK 本身的所有代码

 

 

二、安装配置

  Install using Homebrew:brew install mvndaemon/homebrew-mvnd/mvnd

  手动安装:

    下载地址:https://github.com/apache/maven-mvnd/releases

    ①:下载最新的zip包

    ②:解压,添加bin路径到系统环境变量path中

    

    ③:如果没有配置JAVA_HOME环境变量,需要在conf/mvnd.properties中配置java.home

    ④:mvn/conf/settings.xml配置本地仓库路径

  检查mvnd配置是否生效:mvnd -version

(base) ➜  conf mvnd -version
mvnd native client 0.7.1-darwin-amd64 (97c587c11383a67b5bd0ff8388bd94c694b91c1e)
Terminal: org.jline.terminal.impl.PosixSysTerminal with pty org.jline.terminal.impl.jansi.osx.OsXNativePty
Apache Maven 3.8.3 (ff8e977a158738155dc465c6a97ffaf31982d739)
Maven home: /Users/yangyongjie/mvnd-0.7.1-darwin-amd64/mvn
Java version: 1.8.0_281, vendor: Oracle Corporation, runtime: /Library/Java/JavaVirtualMachines/jdk1.8.0_281.jdk/Contents/Home/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "mac os x", version: "10.16", arch: "x86_64", family: "mac"

 

    

 

三、使用

  将mvn 命令全部替换成mvnd命令,如:mvnd clean install

   

 

 

 

END.

posted @ 2022-01-04 14:36  杨岂  阅读(2724)  评论(0编辑  收藏  举报