2026/3/31 1:24:52
网站建设
项目流程
印度域名注册网站,网站网页设计多少钱,网站编辑,易居cms来源#xff1a;https://blog.csdn.net/chen417980762先上结论#xff01;#xff01;#xff01;经测试#xff1a;多模块清理并打包提升#xff1a;约3.5倍多模块不清理打包提升#xff1a;约5.5倍单模块提升#xff1a;约2倍从测试结果来看#xff0c;多模块效率提…来源https://blog.csdn.net/chen417980762先上结论经测试多模块清理并打包提升约3.5倍多模块不清理打包提升约5.5倍单模块提升约2倍从测试结果来看多模块效率提升更高。在使用mvnd package打包多模块时可在控制台看到多个模块是并行执行的mvn是串行执行所以效率提升更多而单个模块打包没有了多线程的优化只是mvnd相对于原mvn的优化也提升了约2倍速率。以上数据仅在个人电脑上运行几次计算的粗略数据不同的电脑会有所不同但提升的效率还是很明显的。推荐上车另外maven mvnd与maven的使用除了命令不同mvnd和mvn其它的一摸一样。一、mvnd说明使用过maven、gradle、Takari构建工具的会发现maven的构建速度很慢于是maven为了提升maven的构建速度于2023年推出了maven mvnd想以此打个翻身仗。下面是官方摘录的介绍架构概述mvnd嵌入 Maven因此无需单独安装 Maven。实际的构建发生在一个长期存在的后台进程中也称为守护进程 daemon。一个守护程序实例可以为来自客户端的多个连续请求提供服务。客户端是使用 GraalVM 构建的原生可执行文件。 与启动传统 JVM 相比它启动速度更快使用的内存更少。如果没有空闲守护进程来提供构建请求则可以并行生成多个守护进程。此体系结构具有以下优点用于运行实际构建的 JVM 不需要为每个构建重新启动。保存 Maven 插件类的类加载器缓存在多个构建中。因此将读取插件 jar 并且只解析了一次。Maven 插件的 SNAPSHOT 版本不会缓存。JVM 内部的 Just-In-Time JIT 编译器生成的本机代码也被保留。与原生 Maven 相比 JIT 编译所花费的时间更少。在重复构建期间JIT 优化代码可用 马上。这不仅适用于来自 Maven 插件和 Maven Core 的代码也适用于所有传入的代码 从 JDK 本身。github地址https://github.com/apache/maven-mvnd二、软件下载https://downloads.apache.org/maven/mvnd/根据安装的目标操作系统选择对应的版本下面以windows系统为例同一个操作系统有好多个文件不懂的就选择文件大的用过maven的都知道有个几十M大小那些kb级别的小卡拉米肯定不够格。三、安装将下载的zip压缩包复制到想要安装的目录解压尽量不要放在有中文的目录下有经验的人应该吃过类似的亏可按需修改文件夹名mvnd目录结构修改配置文件打开config/mvnd.properties文件拉到最下面指定maven的配置文件。如电脑上之前有用maven可直接指定原maven的配置文件省去了settings.xml配置文件修改如果没有可以指定mvnd/mvn/conf/settings.xml配置文件按需修改配置文件。配置MAVEN_HOME环境变量将mvnd目录配置为环境变量配置path环境变量可以直接配mvnd的bin目录也可以用上面的maven_home环境变量方式%MAVEN_HOME%\bin验证配置是否成功如下图输出版本号即为配置成功四、编译打包速度对比测试测试笔记本配置CPUIntel(R) Core(TM) Ultra 5 125H 3.60 GHz 14核18线程32G内存1T SSD1.maven测试1.1多模块清理并打包共编译打包19个模块。mvn clean package1.2多模块不清理打包mvn package1.3单模块清理并打包mvn clean package2.mvnd测试2.1多模块清理并打包mvnd clean package2.2多模块不清理打包mvnd package2.3单模块清理并打包mvnd clean package3.效率测试总结多模块清理并打包提升65/17≈3.5倍多模块不清理打包提升22/4≈5.5倍单模块提升10/52倍从测试结果来看多模块提升的效率更高。在使用mvnd package打包多模块时可在控制台看到多个模块是并行执行编译打包的所以效率提升更快而单个模块打包没有了多线程的优化只是mvnd相对于原mvn的优化也提升了2倍速率。4.控制台中文乱码问题如下图编译控制台输出的中文是乱码。尝试过网上说的很多中方法如在mvnd.properties和setting.xml中配置编码为utf-8、配置系统环境变量等都无效唯得下面一法解决了乱码问题。如下图可见mvnd控制台默认使用的是PowerShell那么解决问题的思路就是修改PowerShell的编码方式1.临时修改编码为utf-8复制下面代码在powershell控制台执行再编译项目可查看效果$OutputEncoding [System.Text.Encoding]::UTF8 [Console]::OutputEncoding [System.Text.Encoding]::UTF8 [Console]::InputEncoding [System.Text.Encoding]::UTF82.永久修改将以下内容添加到 PowerShell 的 profile 文件中profile文件位置可在powershell控制台执行命令$profile获取# 设置编码为UTF-8 $OutputEncoding [System.Text.Encoding]::UTF8 [Console]::OutputEncoding [System.Text.Encoding]::UTF8 [Console]::InputEncoding [System.Text.Encoding]::UTF8 # 设置JAVA_TOOL_OPTIONS环境变量 $env:JAVA_TOOL_OPTIONS -Dfile.encodingUTF-8若在路径中找不到profile配置文件在powershell控制台执行下面命令创建profile文件notepad $profile打开文件输入上面的内容保存再重新编译查看效果如下图不要在之前打开的控制台执行因为已打开的控制台不受新的配置影响。另外在直接cmd窗口中使用mvnd命令也会是乱码尝试了几种方式都无效如果要在命令行编译的话请使用powershell。五、IDEA中使用mvnd5.1原来的maven配置不用动由于我安装的idea是2023版而mvnd也是2023年才推出可能idea这个maven侧边窗口还不支持mvnd。不知道2024版有没有支持下面的操作基于2023版本。将mavne主路径配置为mvnd目录侧边栏运行maven命令会有如下错误所以不动原来的配置可以照常在maven侧边栏直接使用mvn命令也可以直接配置mvnd里面的mvn但是要注意maven版本的兼容性。5.2安装maven helper插件(重点)通过maven helper插件来运行mvnd。在应用市场搜做maven helper插件进行安装安装完成后重启idea配置mvnd命令如下图5.3使用mvnd编译项目安装maven helper插件后会在项目的右键菜单上多出两个maven菜单如下图执行菜单中的命令就会使用上图配置的mvnd命令。或者在maven窗口中使用mvnd在项目或模块上右键运行maven命令执行命令结果可以看到执行的命令是mvnd package原来的mvn双击生命周期的操作仍然可用在多环境配置文件编译时使用maven helper的右键菜单构建时可以清楚的看到执行的命令使用的是什么配置环境至此mvnd的安装、配置、使用流程已全部完成。好了给粉丝个福利打车千万别直接去APP记得先领券 亲测一单省了30块钱