CrazyAirhead

疯狂的傻瓜,傻瓜也疯狂——傻方能执著,疯狂才专注!

0%

如何使用Gradle打包分离SpringBoot项目的第三方包

说明

目前团队通过VPN远程开发,其中一部分服务没有采用Jenkins进行发布,此时只能通过sftp进行上传,而SpringBoot的项目基本上编译出来就有百来兆,其实还是挺花时间的。因此在想应该分离Spring的Lib包,减少每次需要上传的文件。

编译后的目录结构

1
2
3
4
/
--lib
|---*.jar
--*.jar

步骤

主体上只要修改build.gradle

清理目录

1
2
3
task clearJar(type: Delete) {
delete "$buildDir\\libs\\lib"
}

拷贝依赖

1
2
3
4
task copyJar(type: Copy, dependsOn: 'clearJar') {
from configurations.compileClasspath
into "$buildDir\\libs\\lib"
}

修改bootjar

主要作用时分离Lib,指定ClassPath

1
2
3
4
5
6
7
8
9
10
11
12
13
14
bootJar {    
// 例外所有的jar
excludes = ["*.jar"]

// lib目录的清除和复制任务
dependsOn clearJar
dependsOn copyJar

// 指定依赖包的路径
manifest {
attributes "Manifest-Version": 1.0,
'Class-Path': project.getConfigurations().compileClasspath.files.collect { "lib/$it.name" }.join(' ')
}
}

参考链接

https://stackoverflow.com/questions/42552511/cannot-change-dependencies-of-configuration-compile-after-it-has-been-resolve

Spring Boot Gradle 瘦身打包 thinJar,分离 lib jar 依赖

欢迎关注我的其它发布渠道