首页 > IT职业 > IT职场 > 夏天到了,来给jar包瘦个身!
工作中终于遇到比较好玩的东西了,最近被给了一个需求,将pom中的第三方依赖移到外面而不直接打包进jar包。直接打包有什么问题吗
列一下直接打包的三宗罪!!!
第二点和第三点差不多,都是由版本导致重新打包
但是我们打包时不将依赖的第三方包打包进去,那么最后的jar包不仅小,而且当依赖的第三方版本发生变化时不需要重新打包了

既然排除第三方包可以带来这么多好处,心动不如行动,赶紧对自己的项目大刀阔斧改造一下吧
在maven项目中配置打包相关的东西是在pom文件中的,如果不需要将第三方包排除在外,通常在pom中都是这样配置的
authsdk-service-${version} org.springframework.boot spring-boot-maven-plugin authsdk-service-${version} repackage org.apache.maven.plugins maven-compiler-plugin ${project.build.sourceEncoding} 8 8
复制代码
打包后看一下打包后jar包的大小

大小为27515KB,查看一下jar包的内容,会发现在BOOT-INF/lib目录下都是依赖的第三方包

很明显,这些依赖的第三方包是导致打包出来的jar包大的原因
现在要对pom文件做一个改动,使其不将第三方依赖打包进去,修改后的配置
authsdk-service-${version} org.springframework.boot spring-boot-maven-plugin <!-- 此处为项目的主类路径 -->com.xxx.authsdk.AuthsdkServiceApplication ZIP <!-- 排除所有的第三方依赖的Jar包 -->nothing nothing repackage org.apache.maven.plugins maven-compiler-plugin 8 8
复制代码
修改完后重新打包

jar包大小变为1702KB,是原来的50分之3,瘦身效果很明显!!!
同时查看jar包内容/BOOT-INF下没有lib文件夹了,确实没有将第三方依赖打包进去了
你以为到这里就完了吗,不,还可以做的更好!因为打包时没有将第三方依赖打包进去,因此启动的时候需要指定第三方依赖的位置程序才能正常启动,这就必须要求我们必须保从最开始未瘦身的jar包中将lib文件夹给抠出来,这样的做法就稍微有点low了。maven提供了一种显示指定lib文件夹保存路径的方法,在之前的pom文件基础上加下如下配置
org.apache.maven.plugins maven-dependency-plugin copy-dependencies <!-- 复制第三方 jar 到指定路径下 下 -->G:/java工程/authorize_service/lib provided <!-- 配置的作用:跳过复制第三方依赖这一步。这是在首次上传
第三方依赖到服务器之后,启用这个选项,可以不用在打包时
重复复制,节省时间。-->false
复制代码
通过指定lib目录保存路径为当前项目路径下
因为没有将第三方依赖打包进去,因此启动时必须显示指定第三方依赖路劲
作者:何甜甜在吗
链接:https://juejin.cn/post/6965788275432751135
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4830/viewspace-2797597/ ,如需转载,请注明出处,否则将追究法律责任。