Spring Boot gradle 打包瘦身减少jar包体积 含demo

Spring Boot 1.5.x 打包

demo项目地址
https://gitee.com/youngboyvip/package-example

解决问题

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版本不适用

configurations {
    mycustomconfiguration //单独配置configuration
}

dependencies {
    //给mycustomconfiguration 配置依赖,如果你不配那lib/中就不会有jar包
    mycustomconfiguration "org.liquibase:liquibase-core" 
}

//复制依赖jar包的任务,会在build/libs 目录下面生成lib.zip文件
task copyJars(type: Zip) {
    from(configurations.compile) 
    destinationDir file("build/libs") 
    archiveName "lib.zip"
}

task clientJar(type: Jar) {
    appendix = 'slim'
    from sourceSets.main.output 
    exclude('.*/lib/**') 
    manifest {
        attributes 'Main-Class':'org.springframework.boot.loader.PropertiesLauncher'
    }
}

task bootJar(type: BootRepackage, dependsOn: clientJar) {
    springBoot.layout = 'zip'
    withJarTask = clientJar 
    customConfiguration = "mycustomconfiguration"
}

打包命令 执行bootJar 就ok了

启动方法

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

STEP2: 执行命令

java -Dloader.path="lib/,WEB-INF/classes" -jar 你jar包的名字

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
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值