浅浅的实践Maven Daemon


placeholder image
admin 发布于:2025-10-30 09:56:56
阅读:loading

已经使用过Apache Maven Daemon了一段时间了,但是感觉不是十分有必要去使用它,但作为使用的一些经验和掌握的一些技术,或者说为了丰富本站的博客文章吧,还是在过了几个月后再来花两个小时来吧这块的东西整理汇总一下。尽管不是很有必要的去选择使用它,尽管不知未来还会不会有再次使用的机会。


1.简单介绍

(1)什么是Maven Daemon?

Maven Daemon类似于Java生态中的Gradle Daemon,是一种持续运行的后台进程,用于缓存和管理Maven的构建状态。传统的Maven每次执行都需要加载项目、解析依赖、初始化环境,耗时较长。而Daemon的出现,让重复构建的启动时间大大缩短,实现“即开即用”的高速体验。通俗的来说Maven Daemon 就像是一个一直开着的“帮手”或者“助手”,平时你用 Maven 构建项目,每次都需要启动一个新的“工作站”,然后花一些时间让它准备好,才能开始编译、打包。而 Maven Daemon 就是把这个“工作站”变成了一个一直开着的“后台服务”。这样,当你下一次需要构建时,不用再重新启动,它已经在后台准备好了,只需要告诉它“帮我做这个事情”,它就能迅速开始工作。

简单来说:

1. 没有 Maven Daemon:每次构建都像重新开一台电脑,启动、加载、准备,每次都要花时间。

2. 有 Maven Daemon:像有一个一直待命的助手,随时准备帮你工作,节省了等待时间。

3. 这样一来,开发效率就提高了很多,尤其是在频繁编译或调试的时候,能大大缩短等待时间,让开发体验更顺畅。

不严格来说,对Maven Daemon的掌握并不多,也只是浅浅的应用于日常工作中的项目打包,所以我才觉得它对我来说并不是不可或缺的。

(2)为什么需要 Maven Daemon?

1. 启动速度快:避免每次执行都启动全新的JVM实例。

2. 资源复用:缓存依赖和中间状态,减少重复计算。

3. 提高效率:尤其在持续集成、频繁编译的场景中表现明显。

2.安装实践

(1)访问Github项目主页“https://github.com/apache/maven-mvnd”,从右侧Realease处按需下载对应的版本(目前最新版本为1.0.3),由于在Windows环境使用,本次下载的是“maven-mvnd-1.0.3-windows-amd64.zip”版本,参考如下图所示:

image.png

(Github项目主页)

image.png

(Github下载安装包)

(2)将下载的安装包解压缩并移动至合适目录,如“E:\dev-tools\maven-mvnd-1.0.3”这个目录,并配置环境变量,也就是说增加了MVND_HOME=“E:\dev-tools\maven-mvnd-1.0.3”,修改Path变量增加%MVND_HOME%\bin的路径。可以尝试在任意目录打开cmd窗口,验证Maven Daemon是否配置可用,参考如下代码命令:

C:\WINDOWS\system32>mvnd -version
Apache Maven Daemon (mvnd) 1.0.3 windows-amd64 native client (824a1fd42088e27dec6cc7cc392b9122379e7bf0)
Terminal: org.jline.terminal.impl.jni.win.NativeWinSysTerminal
Apache Maven 3.9.11 (3e54c93a704957b63ee3494413a2b544fd3d825b)
Maven home: E:\dev-tools\maven-mvnd-1.0.3\mvn
Java version: 1.8.0_172, vendor: Oracle Corporation, runtime: E:\dev-tools\java\jdk32-8u172\jre
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 10", version: "10.0", arch: "x86", family: "windows"

3.打包实践

比如说项目的代码量比较大,项目划分的模块比较多,每个模块都是一个独立的jar包,尝试使用下列命令进行打包实践,参考过程如下图所示:

image.png

(使用命令执行打包)

image.png

(最大线程个数)

image.png

(打包执行结束)

4.其它事项

(1)选中项目级文件夹,右键Run Maven-->New Goal可以创建执行项目打包的命令,执行后可以通过右键菜单执行,无需在Terminal处输入命令执行;

(2)上述打包过程中包含了较多的执行参数,其中在打包过程中可以同时对多个Module对象并行打包;

(3)IDEA原生对于Maven设置也支持参数定制,比如支持设置最大内存、多线程数量、跳过测试等等定制,不过二者对于跳过测试的参数使用不同;

(4)掌握的水平较浅,基本上MVND与原生Maven的使用方式区别不太大,直接使用mvnd命令替换mvn即可。在大型项目的情况下,maven-mvnd的效率确实是更快的。主要体现是对于Java代码编译做了改善。另外,对于硬盘性能较差的也是值得拥有;

 点赞


 发表评论

当前回复:作者

 评论列表


留言区