五分钟技术趣谈|mvnd:更快的maven来了

Labs 导读

Maven和Gradle都是我们程序猿们日常开发必不可少的构建工具,但两者还是有很大的不同之处的:1.可扩展性,Gradle比较灵活,maven的灵活性就差一些,但是maven的项目比较容易看懂,并且上手简单;2.性能比较,Gradle比maven运行得快。Gradle无论是在可扩展性还是在性能方面都优于Maven。

相信作为Java开发者的你早已经受够了maven的编译缓慢,但是又由于历史包袱、使用习惯等问题暂时切换不了其他更快的构建工具,这里介绍一款更快的Maven——maven-mvnd[1]。

Part 01

介绍

mvnd并不是对Maven进行了重构,而是内置了Maven。它实际上是一个或者多个Maven守护进程,用来执行实际的构建服务。一个守护进程实例可以为来自mvnd客户端的多个连续请求提供Maven构建服务。当没有空闲的守护进程时来支撑构建请求时,mvnd可以并行生成多个守护程序。

使用GraalVM代替JVM

mvnd之所以快是因为它使用了GraalVM替代了传统的JVM,因此它启动更快,占用内存更少,而且在实行构建时不需要为每个构建启动新的JVM。另外Maven插件在构建时不再需要多次加载,而是缓存在多个构建中。SNAPSHOT版本的Maven插件不会被缓存。

支持JIT

GraalVM的JIT(Just In Time)实时编译特性也被运用到Maven构建作业中。JIT可以大大降低编译时间,在重复构建过程中,JIT优化代码立即可用,也极大提高了构建效率。

并行构建

目前Maven 3的并行构建(parallel builds)还是实验特性,而且要求使用的插件必须是线程安全的。而mvnd默认就支持使用多个CPU内核进行并行构建。当然如果你的源代码不支持并行构建,也可以通过添加- T1参数切换到串行构建。

Part 02

简单尝试

- 安装

目前mvnd已经支持Linux、MacOS、Windows平台。你可以分别通过SDKMAN、Homebrew、Chocolatey这些包管理器进行安装。也可以直接去mvnd发行版仓库[2]下载对应的二进制进行安装。这里以Windows为例,小编选择 从mvnd发行版仓库[2]下载压缩包,如下图所示:

图片

选择下载 maven-mvnd-1.0-m6-m40-windows-amd64.zip版本。

- 配置

配置很简单,只需要注意几点:

如果不使用包管理器进行安装的话请确保mvnd的bin目录关联到PATH。

解压后修改配置文件,修改conf/mvnd.properties。拉到底部修改settings文件目录,可以指向原安装maven中的xml文件,也可单独放到一个目录中。

图片

如果没有配置或者不想配置JAVA_HOME环境变量的话请在~/.m2/mvnd.properties中设置java.home以指定Java目录,例如:java.home=C:\\AdoptOpenJDK\\jdk-8。已经配置环境变量的请忽略该条。

其他配置可参考mvnd配置[3]。

- 验证

环境变量配置完成,在cmd的任意地址,可以识别到bin下的 mvnd 命令输入mvnd -version查看版本信息,输出如下信息代表安装成功!

图片

- 使用

在使用上与Maven的用法是完全相同的,只需将命令mvn改为mvnd即可。而在笔者本机的实测中,与传统的Maven相比,通过mvnd的构建所耗费的时间大约是原来的1/2。

  • maven构建

图片

  • mvnd构建(并行)

图片

  • mvnd构建(串行)

图片

Part 03

总结

由于GraalVM的加持,这个工具很可能会延长Maven的生命,避免过早被Gradle拉开优势。对于我们来说,这个项目可以观望一下,看看Apache Maven官方的进一步动作。

参考文献

[1] maven-mvnd: https://github.com/apache/maven-mvnd.

[2] mvnd发行版仓库: https://github.com/mvndaemon/mvnd/releases.

[3] mvnd配置: https://github.com/mvndaemon/mvnd/blob/master/dist/src/main/distro/conf/mvnd.properties.

新闻名称:五分钟技术趣谈|mvnd:更快的maven来了
网站地址:http://www.csdahua.cn/qtweb/news42/454442.html

网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网