SpringBoot项目使用Gradle打包为可执行Jar包并分离项目依赖

前言

传统的Java应用程序我们会打包成war包,并配置tomcat来运行它。

在SpringBoot框架下,官方封装了一个bootJar的脚本以便于我们可以直接把项目打包成Jar包,并且不需要依赖外部tomcat运行。

将项目打包为Jar包并运行

在我们的项目根目录的 build.gradle文件后添加以下内容:

1
2
3
bootJar {
    launchScript()
}
 
 

而后使用Gradle的 bootJar命令即可将项目打包为Jar包。

image.png

在windows下我们这样运行这个项目:

1
java -jar xxx.jar
 
 

实际应用中,我们需要将打包的项目上传到远程服务器运行,而Jar包文件过大会影响我们上传的效率,这时,我们可以通过打包时分离项目依赖来减小Jar包体积。

分离项目依赖

将上文build.gradle里添加的内容替换为如下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// 将依赖包复制到lib目录
tasks.register('copyJar', Copy) {
    // 清除现有的lib目录
    delete "$buildDir\\libs\\lib"
    from configurations.runtimeClasspath
    into "$buildDir\\libs\\lib"
}

bootJar {
    // jar包名称,默认是settings.gradle下的工程名 rootProject.name = 'esp_front'
    archiveBaseName = 'esp_front'
    // jar包版本号
    archiveVersion = '0.0.1'
    // 排除所有的jar
    excludes = ["*.jar"]
    // lib目录的清除和复制任务
    dependsOn copyJar

    // 指定依赖包的路径
    manifest {
        attributes "Manifest-Version": 1.0,
                'Class-Path': configurations.runtimeClasspath.files.collect { "lib/$it.name" }.join(' ')
    }
    launchScript()
}
 
 
在老版本的Gradle中你可能需要将代码更换为如下内容
 
 
 
 

然后重新执行bootJar命令,可以发现打包的项目分为了一个lib文件夹和一个Jar文件,其中lib文件夹下是该项目的依赖包,将lib文件夹和Jar文件一起上传到服务器运行即可(保持lib文件夹与Jar文件同级)。

image.png

后续部署时,如果仅仅项目代码有变化而项目依赖没有变化,则重新上传到服务器时不需要重复上传这个文件夹,仅仅上传Jar文件即可。

SpringBoot项目使用Gradle打包为可执行Jar包并分离项目依赖 | 卡布奇洛的咖啡店

posted @ 2025-04-02 17:19  CharyGao  阅读(140)  评论(0)    收藏  举报