我们上面下载的 Java 版本为 Amazon,所以其对应版本就是 corretto-1.8.0_352。
B.更新至环境变量
打开 ~/.bashrc 或者 ~/.bash_profile,取上面版本的数字部分即 1.8.0_352 并添加至 bash 中:
#java8
alias java8='export JAVA_HOME=$(/usr/libexec/java_home -v 1.8.0_352)'
最后记得使用下述命令更新配置
source ~/.bashrc
source ~/.bash_profile
C.使用新环境变量
只需在 Terminal 输入 java8 即可:
java8
echo $JAVA_HOME 看一下,如果为上面 bash 中输入的版本即代表 Terminal JDK 更新完成:
/Users/XXX/Library/Java/JavaVirtualMachines/corretto-1.8.0_352/Contents/Home
三.网速优化
这里物理网速肯定是固定的,我们无法优化,不过我们可以通过配置 maven 镜像,提高 maven 下载相关依赖的速度,常见的镜像有 Aliyun。
1.打开 Maven Setting
通过 Idea 打开 maven settings.xml:
2.配置 Mirror
添加 并在其中添加 aliyun mirror:
<mirrors>
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
</mirrors>
添加后相关下载均来自 aliyun,避免从公网下载网络不通畅导致打包速度延长:
Tips:
这里还有一些小伙伴有疑问,如果我配置多个镜像或者我已经有其他镜像怎么办。这里 mirrors 支持配置多个 mirror 镜像,但是实际使用中只能使用 1 个镜像,默认情况下使用第一个 mirror。理想情况下是镜像 A 没有的依赖去镜像 B 中寻找,但是实际是只有当镜像 A 无法连接时,才会到连接到镜像 B,所以大家需要根据自己的需求将项目需要的镜像放置到第一位或者使用时指定镜像 name,如果有公司的镜像,也可以以公司镜像为主。
四.多线程打包
maven 支持多线程打包,只需使用 -T 参数指定即可。
1.指定 CPU Cores
mvn -T $CoreNum package
2.指定 CPU 线程倍数
1C 代表使用 1倍的 CPU 线程数进行并行打包,也可以 2C、3C,一般而言 1C 即可。
mvn -T 1C package
Tips:
常规单体项目使用 -T 参数多线程打包效率有提升,但是提升效果有限,如果是多项目融合打包,使用 -T 参数效果明显。
五.更多尝试
1.项目精简
由于编译期间需要将多个 java 文件编译为 .class,所以项目内的代码数量与文件数量一会影响 mvn package 的效率,如果项目里有多余的文件或者代码,可以进行代码瘦身,提高编译效率。
2.忽略测试
忽略编译中的测试阶段:
mvn package -DskipTests
如果本身没有指定测试类即可忽略,maven 打包期间也会自动提示:
3.本地运行预编译
如果可以在运行前先在本地运行一下待编译项目,也可以大大提高 mvn package 效率,因为本机运行项目时需要先对项目编译一次,从而后面 package 时的编译时间即可节省,当然本质上都一样,就是至少得编译一次。
mvn clean 后 package:
run 后 package:
可以看到差距还是很大的。
六.Mvn Package 实战检验
更换 JDK 版本为 ARM 系列
更换 Aliyun Mirror
采用多线程 -T 1C 打包
本次优化主要修改上述三个部分,下面看一下实战效果。
1.x86 + NoMirror + 单线程 Package
mvn clean 后打包:
run 后打包:
分别耗时 3:42 min 与 23.454 s。
2.ARM + Aliyun Mirror + -T 1C Package
mvn clean 后打包:
run 后打包:
分别耗时 1:27 min 和 13.533s,优化效果明显。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
44660)]
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!