Mvnd高速打包
背景
我司使用的是Java8+Maven3.6.3
为什么要使用mvnd来进行打包,因为我们的项目在进行整合之后,module的数量来到了59个,使用Intel® Core™ i9-9980HK CPU @ 2.40GHz 64GRAM 来进行打包还需要至少2min的时间,使用公司的打包服务器需要10min,已经成为了痛点
首先安装Maven-mvnd
brew install mvndaemon/homebrew-mvnd/mvnd |
安装完成之后查看是否成功
mvnd -version |
使用mvnd进行打包,与原生mvn的命令用法是相同的,不过是将mvn变为了mvnd
mvnd clean package -Dmaven.test.skip=true |
如何使用IDEA集成mvnd呢?有开发用户已经给IDEA提出过,是否可以将mvnd配置在IDEA中,让开发人员原生使用,但是IDEA的官方明确回复maven已经达到原生支持,可以使用另外的shell插件来实现maven的编译。
简而言之就是一键运行脚本,哈哈有点鸡肋
使用原生maven
使用mvnd
踩坑
第一个问题
使用原生maven可以打包成功但是使用mvnd就会失败,简单来说就是遇到了lombok不生效的情况
解决办法 在根pom中使用打包plugin,指定使用lombok进行打包,因为使用idea的时候就已经勾选了启用注解编译,但是使用原生命令的时候就会有问题
<build> |
第二个问题
使用原生mvn命令进行打包时报错
[ERROR] /xxxxxx/SymmetricEncoder.java:[4,16] 找不到符号 [ERROR] 符号: 类 BASE64Encoder [ERROR] 位置: 程序包 sun.misc [ERROR] -> [Help 1] |
这个如果大家做过Java升级就很明白,这是因为高版本jdk不再有这些解密包,问题就出现在使用mvn的Jdk版本上
我们可以看到驱动mvnd的java版本是23.0.1,这明显太高了,项目本身使用的是1.8
尝试直接指定javaHome把
/usr/libexec/java_home -V |
使用1.8
code .zshrc |
在尾部添加
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_241.jdk/Contents/Home |
source .zshrc |
使用mvnd发现报错了,因为maven不支持jdk8,所以我们要尝试降低mvnd的版本访问maven-mvnd的github我们发现可以使用
brew install mvndaemon/homebrew-mvnd/mvnd@1 |
来安装1的版本,1的版本使用的是maven3.9,相比于2的4.0beta兼容了jdk8
重新卸载安装之后