1 背景

项目工程结构复杂,模块很多,传统的maven构建效率很慢,需要几分钟甚至十几分钟的时长,急需提高maven构建效率

1.1 maven-mvnd介绍

maven-mvnd和maven没有直接的关系,它们是两个完全独立的的项目。但是maven-mvnd是完全兼容maven的所有特征的,使用方式和命令操作完全和maven一样。
它最大的特点就是编译速度快,占用内存少,根据官方的描述可以总结为下面几点:

  • mvnd 嵌入了 Maven(因此无需单独安装 Maven)。
  • 实际构建发生在一个长期存在的后台进程中,也就是守护进程。
  • 一个守护程序实例可以处理来自 mvnd 客户端的多个连续请求。
  • mvnd 客户端是使用 GraalVM 构建的本机可执行文件。与启动传统 JVM 相比,它启动速度更快,占用的内存更少。
  • 如果没有空闲守护进程来为构建请求提供服务,则可以并行生成多个守护进程。
  • 用于运行实际构建的 JVM 不需要为每个构建重新开始。
  • 保存 Maven 插件类的类加载器缓存在多个构建中。因此,插件 jar 只需读取和解析一次。不缓存 Maven 插件的 SNAPSHOT 版本。
  • JVM 内部的实时 (JIT) 编译器生成的本机代码也会保留。与普通 Maven 相比,JIT 编译花费的时间更少。在重复生成期间,JIT 优化代码会立即可用。这不仅适用于来自 Maven 插件和 Maven Core 的代码,也适用于来自 JDK 本身的所有代码。

2 maven-mvnd安装

整体安装比较简单,跟maven安装是一样的,可以使用便捷安装,也可以手动自己安装(小白适合,不关注安装目录,自动安装说明地址:https://github.com/apache/maven-mvnd),以下以手动安装为例。

2.1 mvnd下载

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

找到合适的版本,打开Assets折叠标签,即是下载地址,说明是当前「1.0.2」是适配jdk8的,选择的时候可以看看jdk要求和自带的maven版本,是否适合项目。

2.2 mvnd安装

2.2.1 解压

将下载文件加压到安装目录(注意安装路径不要有中文和空格等特殊字符)

2.2.2 配置环境变量

  • 编辑 Shell 配置文件(如 ~/.zshrc~/.bashrc):

    echo 'export PATH="/usr/local/mvnd/bin:$PATH"' >> ~/.zshrc  # Zsh 用户
    # 博主示例
    JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home
    M2_HOME=/Users/navis/java/apache-maven-3.9.5
    MVND_HOME=/Users/navis/java/maven-mvnd-1.0.2
    HOME_BREW=/opt/homebrew
    PATH=$JAVA_HOME/bin:$M2_HOME:$M2_HOME/bin:$HOME_BREW/bin:$MVND_HOME/bin:$PATH:.
    export JAVA_HOME
    export M2_HOME
    export MVND_HOME
    export PATH
    # 或
    echo 'export PATH="/usr/local/mvnd/bin:$PATH"' >> ~/.bashrc # Bash 用户
  • 生效配置:

    source ~/.zshrc  # 或 source ~/.bashrc

2.2.3 配置mvnd

打开mvnd的安装目录,进入conf目录,找到配置文件「mvnd.properties」

# JAVA_HOME
# Java home for starting the daemon. The client normally sets this as environment variable: JAVA_HOME
# 如果存在多个jdk版本,可以指定路径
# java.home=<path>

# 需要指定已有的maven的setting配置文件,不然会使用自带的默认配置
# The location of the maven settings file. The client normally uses default settings in {@code ~/.m2/settings.xml}.
maven.settings=/Users/navis/java/apache-maven-3.9.5/conf/settings.xml

2.2.4 验证安装

mvnd --version

成功输出示例:

Apache Maven Daemon (mvnd) 1.0.2 darwin-aarch64 native client (cccc1ec8a5b741c62b29f9fb04d37b1678a029bb)
Terminal: org.jline.terminal.impl.PosixSysTerminal with pty org.jline.terminal.impl.jni.osx.OsXNativePty
Apache Maven 3.9.9 (8e8579a9e76f7d015ee5ec7bfcdc97d260186937)
Maven home: /Users/navis/java/maven-mvnd-1.0.2/mvn
Java version: 1.8.0_391, vendor: Oracle Corporation, runtime: /Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "mac os x", version: "14.2.1", arch: "aarch64", family: "mac"

2.2.5 mac无法打开“mvnd”,因为Apple无法检查其是否包含恶意软件问题解决

通过系统设置允许(图形界面操作)

  1. 打开 系统设置 > 隐私与安全性
  2. 在”安全性”部分,你会看到关于 mvnd 的警告信息
  3. 点击 “仍要打开” 按钮(可能需要输入密码)
  4. 之后再次尝试运行 mvnd --version

3 intellij idea 集成使用

3.1 安装maven helper插件

去设置中的插件市场搜索安装即可

3.2 配置maven helper插件

在「设置」-》「其他设置」中找到「maven helper」,没有就直接搜索。

  • 勾选配置项:Use a Terminal to run goals, with a custom mvn command : mvnd
  • 增加Goals 快捷命令:clean deploy -DskipTests等,按需增加

3.3 使用mvnd构建

有三种方式运行

  • 点击项目右键,选择Run Maven,最后选择自己的命令,例如:clean deploy -DskipTests
  • 点击maven窗口,点击项目右键,选择Run Maven,最后选择自己的命令,例如:clean deploy -DskipTests
  • 直接命令窗口执行mvnd clean deploy -DskipTests

4 效果展示

项目 maven构建 maven-mvnd构建
lcp-app 01:50 min 32.380 s
lcp-plugin 02:16 min 22.063 s
作者:聂维  创建时间:2025-06-13 11:13
最后编辑:聂维  更新时间:2025-06-13 11:19