Spring Boot gradle 打包瘦身 含demo!

曾经终败给现在 2022-01-20 09:43 478阅读 0赞

项目地址 gitee.com/youngboyvip…

Spring Boot 1.5.x 打包

解决问题

Spring Boot 项目包太大上传服务器费时

优化原理

把占空间的 lib 目录移到外面去,打包时指定loaderPropertiesLauncher,启动时使用loader.path制定 lib 目录的位置

参考文档 bootReapckage 文档67.3 Packaging executable jar and war files 章节 点我 Spring Boot Loader 原理 E.1 Nested JARs 章节 点我

gradle task写法

Spring 1.5.x版本适用 2.x版本不适用

  1. configurations {
  2. mycustomconfiguration //单独配置configuration
  3. }
  4. dependencies {
  5. //给mycustomconfiguration 配置依赖,如果你不配那lib/中就不会有jar包
  6. mycustomconfiguration "org.liquibase:liquibase-core"
  7. }
  8. //复制依赖jar包的任务,会在build/libs 目录下面生成lib.zip文件
  9. task copyJars(type: Zip) {
  10. from(configurations.compile)
  11. destinationDir file("build/libs")
  12. archiveName "lib.zip"
  13. }
  14. task clientJar(type: Jar) {
  15. appendix = 'slim'
  16. from sourceSets.main.output
  17. exclude('.*/lib/**')
  18. manifest {
  19. attributes 'Main-Class':'org.springframework.boot.loader.PropertiesLauncher'
  20. }
  21. }
  22. task bootJar(type: BootRepackage, dependsOn: clientJar) {
  23. springBoot.layout = 'zip'
  24. withJarTask = clientJar
  25. customConfiguration = "mycustomconfiguration"
  26. }
  27. 复制代码

打包命令 执行bootJar 就ok了

启动方法

STEP1: 解压lib.zip 文件到lib文件夹

STEP2: 执行命令

  1. java -Dloader.path="lib/,WEB-INF/classes" -jar jar包的名字
  2. 复制代码

Spring Boot 2.x 打包

使用spring-boot-thin-launcher插件打包SpringBoot项目

github地址传送门

优化原理

使用 ThinJarWrapper 装载器从jar包 pom.xml/META-INF/mavenMETA-INF/thin.properties路径中解析出依赖的jar包,

然后从本地仓库或远程仓库拉取jar包,然后使用ThinJarLauncher 运行 Main 函数

使用说明

运行 thinJar 任务打包

运行 java -jar jar包名 启动

注意事项

别忘了配置 apply plugin: 'maven-publish' 插件,不然不会生成pom文件

文档参考

文档

maven 项目参考

使用maven插件即可 文档

发表评论

表情:
评论列表 (有 0 条评论,478人围观)

还没有评论,来说两句吧...

相关阅读

    相关 spring boot

    Spring Boot 越来越流行,使用Spring Boot 技术的公司和项目也越来越多, 相比之前框架中大量的配置文件,繁琐的配置确实方便了很多,提高了开发的效率. 不同