Java 开发者必看!更快的 maven——maven-mvnd 介绍

2024-11-18
来源:网络整理

点击上方“Java Base”,选择“设为星级”

做一个积极的人,而不是消极的人!

文章每天14:00更新,每天都有亿万根头发掉……

源码精品专栏

相信作为一名Java开发者,你已经受够了缓慢的编译,但由于历史包袱、使用习惯等问题,你暂时无法切换到其他更快的构建工具。这里笔者给大家介绍一种更快的——mvnd。

-mvnd 是源自团队并源自团队的更快构建工具。 mvnd是内嵌的,也正是因为这个原因,我们可以无缝切换到mvnd(不需要单独安装)。

在设计上,mvnd中会生成一个或多个守护进程来服务构建请求,从而达到并行构建的效果。另外,在VM选择上,采用mvnd替代传统的JVM,启动速度更快,占用内存更少。

据文档介绍,mvnd相对于传统的有以下优点:

默认情况下,mvnd 使用多个 CPU 内核并行构建模块。使用的内核数量由公式 Math.max(.().() - 1, 1) 给出。如果您的源代码树不支持并行构建,请在命令行上传递 -T1 以使构建串行。

vm商城小程序开发_商城小程序开源_微商城小程序app开发

同时官方给出了在24核机器上运行的动态图:

基于Boot+Plus+Vue实现的后台管理系统+用户小程序,支持RBAC动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

对于mvnd的安装,官方文档提供了非常详细的教程。建议先阅读:。

笔者通过安装方法进行了安装,实践证明m1的安装和使用没有问题。不过需要注意的是,这样安装的mvnd版本是0.7.1,在和m1上测试后发现这个版本不支持JDK8(可能只是作者电脑的问题),官方给出的例子说明确实没问题。在JDK8中运行mvnd命令会产生以下错误:

~ % mvnd -v
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/mvndaemon/mvnd/client/DefaultClient has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:757)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:473)
at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
at java.lang.ClassLoader.loadClass(ClassLoader.java:419)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
at java.lang.ClassLoader.loadClass(ClassLoader.java:352)

估计这样下载的可执行文件是用高版本的JDK编译的,因为缺少某些方法或者特性而无法在低版本上运行。正当我一头雾水的时候,我从最新版-mvnd的更新说明中找到了一条:java for mvnd and #512。作者针对这个问题提供了一个解决方案,就是设置指定版本为,运行mvnd命令时添加参数.=8,即

mvnd -Dmaven.compiler.release=8 compile

这样就可以生成JDK8对应的编译代码了。

vm商城小程序开发_微商城小程序app开发_商城小程序开源

关于#512,作者回复说mvnd最低支持的版本是JDK8,但是作者从0.5.2开始尝试时还是报同样的错误...可能是作者电脑有一定问题,因为我看到了结果其他人发布的。图为JDK8下最新版本也可以安装使用。另外,如果还是不行,也许我们可以通过手动编译源代码来生成可执行文件。具体步骤官方网站上已经给出了。

基于+++++Vue实现的后端管理系统+用户小程序&支持RBAC动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

用法和mvn完全一样。只需将命令 mvn 更改为 mvnd 即可。笔者在本机上实测,与传统方法相比,通过mvnd构建所花费的时间是原来的1/2。

本文作者将分别从-mvnd的介绍、安装、使用以及一些异常情况入手。如果读者想了解更多细节,可以阅读官方文档。而且也许增强版还是没法比,但是这个增强版在历史包袱、使用习惯等背景下还是很香的。

欢迎加入我的知识星球讨论架构、交流源码。长按下方二维码即可加入:

知识星球更新后的源码分析如下:

《土豆入门2》系列。

提供了近3W行代码的示例,以及超过6W行代码的电商微服务项目。

分享