赞
踩
SpringBoot应用瘦身指的是:将SpringBoot应用打包利用合理的方式减小体积。
现有的应用开发中,springboot作为底层框架,打包时最终都会以jar包的方式打包、部署。这时就会面临一个问题,**因为引入很多的第三方依赖 ** jar包的体积非常大,单体应用还好,但是微服务是,几十个微服务都要打包成jar包,每个jar包都有几百兆,非常占用空间,如果在云环境或者客户现场部署,会非常崩溃,所以需要瘦身。
瘦身思路:
经常需要发生改变的是业务代码,引入的依赖很少发生改变,所以可以把这两部分分开来打包部署。
可以在打包的时候,将当前应用需要的第三方依赖拷贝到某一个目录。
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>3.1.1</version> <executions> <execution> <id>copy-dependencies</id> <phase>package</phase> <goals> <goal>copy-dependencies</goal> <goals> <configuration> <outputDirectory>${project.build.directory}/lib</outputDirectory> <!--是否排除传递性--> <excloudeTransitive>false</excloudeTransitive> <!--是否去掉jar包版本信息--> <stripVersion>false</stripVersion> <!--包含范围--> <includeScope>runtime</includeScope> </configuration> </execution> </executins> </plugin>
通过这个插件也只能将第三方的依赖单独打包,但是目前还不能从JAR包中分离第三方的依赖。
所以需要对SpringBoot的maven插件进行修改
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>2.6.1</version> <configuration> <mainClass>com.software.SoftWebApiApplication</mainClass> <!--解决windows命令行窗口中文乱码--> <jvmArguments>-Dfile.encoding=UTF-8</jvmArguments> <layout>ZIP</layout> <!--配置需要打包进项目的jar--> <includes> <!--这里填写需要包含进去的jar, 必须项目中的某些模块,会经常变动,那么就应该将其坐标写进来,如果没有则non-exists,表示不打包依赖 如果使用maven多模块聚合,在开发业务时会有一些自己开发的common,那就可以将自己的common加入进来,填入common的组织和项目名就可以了--> <include> <groupId>non-exists</groupId> <artifactId>non-exists</artifactId> </include> </includes> </configuration> <executions> <execution> <id>repackage</id> <goals> <goal>repackage</goal> </goals> </execution> </executins> </plugin>
java -jar -Dloader.path="/lib" xxx.jar
//因为第三方单独打包出来的jar包放在了lib目录下
例:java -jar -Dloader.path=./lib soft-web-api.jar
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。