前言
简单的打包,无需多言吧,idea里面直接点点点就行。可惜凡事大都不能按照我们预期的那样。总有一些奇奇怪怪的需求,会让你头痛一会,但是遇到问题也不用慌,实际我们遇到的大多问题,网上一搜一大票解决方法,然后自己根据自己的经验从里面找到自己想要的结果就行。
springboot打包默认的情况下打完包后会进行一次测试,所谓测试就是启停一下项目,自己测试打包玩的时候,感觉并无大碍,最多只是拖慢一点打包速度。但实际上打包的线上配置很难和打包环境做到一致,就是说你用线上的配置打包项目,项目大多数情况下都是跑不起来的,那么这个默认的测试步骤就没啥用,一般我们都是关闭的。
关闭打包的测试配置
1 | <properties> |
继续聊,Java项目的依赖管理工具,如Maven,又或者Gradle,给我们带来了方便的同时也有了一点点的小限制,实际上并不能称作为限制,只是需求太诡异吧,比如本程序员就遇到过,项目新旧碰撞,有一个依赖及其古老,多老不清楚,Maven中央仓库里已经找不到这个版本了,又不敢用别的依赖替换,那怎么办,项目怎么跑起来呢,大部分IDE工具玩的熟的人,知道怎么弄,手动添加classpath路径,不同IDE有不同的操作方法,不细说。知道这步的,项目开发调试运行没有问题了,但是,我既然都说了,问题肯定还没解决。开发的差不多了,打包发布,一上线,咋报错了呢,一般缺少依赖时,如果你启动过程中没有用到这个依赖,它不会报错,当你执行方法过程中某个类中用到了这个依赖,它才会报错。为啥报错呢,首先我们看异常,我也记不太清,依赖缺失的异常叫什么ClassNotFund什么之类的异常,单词记得不清楚,中式英语2级水平的我翻译就是找不到类异常。这时,对于SpringBoot打的包熟悉的人已经开始查看包里是否有问题,简单看一下,定位到问题了,我们手动添加的依赖,并不能被SpringBoot打包打进去,那怎么办呢。到也不难,既然maven中的依赖能打包进去,我们把依赖在Maven中配一下就行了呗。
Maven在pom中加载本地依赖方法
1 | <dependency> |
继续说吧,这两种以及涵盖了百分之八十以上情况,继续说打包,springboot的打包,很方便,一个整体的Jar包,一行命令就能直接运行启动,很不错。 在一些场景下,就是在你不方便访问线上测试的环境下,一个五六十兆的jar上传将及其麻烦,尤其是在线上测试的时候,实际上每次就更新几个文件,线上部署却依然需要上传很大的依赖,这种情况下,依赖和Jar包分开打包就显得十分有必要了。
SpringBoot项目Jar包依赖分离打包
这个需要几个步骤,首先我们按正常的方式默认打包一下,把正常的打包的Jar包中的lib文件夹粘贴出来,然后配置pom文件
1 | <plugin> |
配置完成后重新打包得到的就是没有依赖的Jar包了,把Jar和上面拷出来的lib文件夹放在同一目录,运行的命令需要加上lib目录
1 | java -jar -Dloader.path=./lib 打出来的Jar包名.jar |