更快的 Maven 来了!!!性能提升 300%

共 1630字,需浏览 4分钟

 ·

2021-12-28 18:53

前几天在 GitHub 上闲逛的时候,发现了一个新的项目:maven-mvnd,可以读作 Maven Daemon,译作 Maven 守护版,旨在为 Maven 提供更快的构建速度,灵感借鉴了 Gradle 和 Takari(Maven 生命周期优化器)。

https://github.com/apache/maven-mvnd

Maven 和 Gradle 可以说是项目构建工具中的绝代双骄,我自己的观点是:Maven 不比 Gradle 好,Gradle 也不比 Maven 好

瞧我这该死的观点,足够的圆滑。

Maven 的优点是稳定可靠,在绝大多数的项目上工作良好,社区生态很完善,几乎所有的 Java 开发者都在用。Maven 的缺点是,对于大一点的项目来说,构建太慢了。

Gradle 的优点是足够的灵活,构建速度也会更快一点,因为使用了后台进程和缓存机制。Gradle 的缺点是版本迭代速度太快,社区跟不上,对于初学者来说,学习曲线比较陡峭。

mvnd 并不是 Maven 的重构版,等于是 Maven ∩ (Gradle & Takari) 部分优点的一个交集

mvnd 使用了以下架构方式:

  • 内部嵌入了 Maven,所以不需要单独安装 Maven。
  • 使用守护进程进行构建,守护进程可以为多个 mvnd 客户端的连续请求提供服务。
  • 使用了内置的 GraalVM 虚拟机,和传统的 Java 虚拟机相比,它的启动速度更快,使用内存更少,内部的 JIT 编译器在编译时花费的时间也更少。
  • 如果已有的守护进程都在工作中,则可以新建多个守护进程来支撑新的构建请求。

这种架构方式使得 mvnd 的性能优势得到了进一步提升。

好,我们来简单尝试下。

mvnd 像 Maven 一样,可以跨平台,支持 Windows、macOS和 Linux。自动化安装的命令也非常简单,如下所示:

# Windows
choco install mvndaemon 
# Linux
sdk install mvnd
# macOS
brew install mvndaemon/homebrew-mvnd/mvnd

为了方便演示,我这里采用手动安装的方式,速度也会更快一点。

通过下面的网址下载 mvnd 的 release 版本:

https://github.com/apache/maven-mvnd/releases

下载完成后解压,然后把 bin 目录添加到 PATH 路径下。

在终端执行 mvnd -v 就可以查看到 mvnd 的配置信息了。

如果出现类似下面这样的错误,未找到 JAVA_HOME,可以按照提示在对应的文件中追加 java.home 属性,也就是 JDK 的安装路径。

刚好之前搭建了一个Spring Boot 项目,我们可以拿 Maven 和 mvnd 来对比一下构建速度。

先执行 mvn clean package 命令,一共花费的时间是 5.318 秒。

再执行 mvnd clean package 命令,一共花费的时间是 3.225 秒。

反复多测试几次,发现 mvnd 确实比 Maven 要快上许多!Maven 维持在 5 秒多,mvnd 维持在 3 秒左右。

当然了,我本地这个 Spring Boot 项目本身非常简单,如果是构建时间更长一点的项目,mvnd 的优势会更大。

感受一下 mvnd 在一个 24 核电脑上执行的样子吧,简直就是效率神器!


没有什么使我停留——除了目的,纵然岸旁有玫瑰、有绿荫、有宁静的港湾,我是不系之舟

推荐阅读

浏览 26
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报