Spring Boot Gradle 瘦身打包 Thin Jar

1.问题

srping boot 2.0+ 打包生产的fat jar太大了(40M+),每次发布的时候实在吃不消,如果能像ASP.Net Core 一样每次发布都平铺依赖和APP Assembly,那我们只需第一次发布完依赖,之后的更新把App Assembly挑出来发布就可以了,一般app只有几十kb,传输压力小了几千倍。

2. 解决

网上一般都是用Maven那套东西在做,但是我项目是gradle构建的,不想改了,搜了半天没看到现成的可以抄的解决方案。
目前只有spring-boot-thin-launcher的这个仓库可以用。

3. 代码

具体解释去看原仓库好了,这里只给出代码

在build.gradle的最前面加上:

buildscript {
    ext {
        springBootVersion = '2.0.1.RELEASE'
        wrapperVersion = '1.0.21.RELEASE'
    }
    repositories {
        mavenLocal()
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot.experimental:spring-boot-thin-gradle-plugin:${wrapperVersion}")
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}
apply plugin: 'maven'
apply plugin: 'io.spring.dependency-management'
apply plugin: 'org.springframework.boot'
apply plugin: 'org.springframework.boot.experimental.thin-launcher'
jar.dependsOn = [thinProperties]

然后运行

gradle thinResolve

生成的代码在./build/thin/root下,只需要像正常情况下一样java -jar myapp.jar就可以了。


很讨厌在这种配置、折腾的东西上浪费时间,没啥技术含量,但弄不好又非常影响效率。
发布出来希望帮更多的人节省时间。

你可能感兴趣的:(Spring Boot Gradle 瘦身打包 Thin Jar)