Gradle+bootJar打包SpringBoot工程并分离jar包和配置文件

使用Gradle+bootJar打包和分离lib包和配置文件

在项目的根目录下的build.gradle文件中添加如下代码:

// 将依赖包复制到lib目录
task copyJar(type: Copy) {
    // 清除现有的lib目录
    delete "$buildDir\\libs\\lib"
    from configurations.compileClasspath
    into "$buildDir\\libs\\lib"
}

// 拷贝配置文件
task copyConfigFile(type: Copy) {
    // 清除现有的配置目录
    delete "$buildDir\\libs\\config"
    from('src/main/resources')
    into 'build/libs/config'
}

// 配置bootJar进行打包
bootJar {
	// jar包名称,默认是settings.gradle下的工程名 rootProject.name = 'alog-server'
    baseName = 'alog-server'
    // jar包版本号
    version =  '0.0.1'
    // 排除所有的jar
    excludes = ["*.jar"]
    // lib目录的清除和复制任务
    dependsOn copyJar
    // 配置目录的清除和复制任务
    dependsOn copyConfigFile

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

执行bootJar任务

在这里插入图片描述

分析打包结果

  1. 查看在工程根目录下的build目录下。
    在这里插入图片描述

  2. 查看jar包,大小只有183KB,以后替换上传到服务器端的时候会很方便。
    在这里插入图片描述

  3. 查看配置文件config目录,程序默认先加载config下的配置,再加载jar包内的配置,所以可以在外部动态修改配置。
    在这里插入图片描述
    Spring boot 启动会扫描以下位置的application.properties或者application.yml文件
    file:./config/ (jar包当前目录下的config目录)
    file:./ ( jar包当前目录)
    classpath:/config/ ( 类文件下的config目录)
    classpath:/ ( 类文件下目录)

  4. 查看lib目录
    在这里插入图片描述

补充

补充一、下面有留言说“baseName和version属性过期了,有替代方法吗”,答案是有的。
在IDEA里按住ctrl+左键点击baseName查看bootJar的源码,如下:

// 弃用注解
@Deprecated
public void setBaseName(@Nullable String baseName) {
    this.archiveBaseName.set(baseName);
}

这里调用的是this.archiveBaseName.set(baseName);方法,所以替代方法就是archiveBaseName,所以上面的脚本可以优化一下如下:

// 将依赖包复制到lib目录
task copyJar(type: Copy) {
    // 清除现有的lib目录
    delete "$buildDir\\libs\\lib"
    from configurations.compileClasspath
    into "$buildDir\\libs\\lib"
}

// 拷贝配置文件
task copyConfigFile(type: Copy) {
    // 清除现有的配置目录
    delete "$buildDir\\libs\\config"
    from('src/main/resources')
    into 'build/libs/config'
}

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

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

补充二 Phil01留言说copy jar包少的问题,我试了好像都可以,不过copy多一点肯定不会出问题,这里更改一下copy jar包的方法。
在这里插入图片描述

// 将依赖包复制到lib目录
task copyJar(type: Copy) {
    // 清除现有的lib目录
    delete "$buildDir\\libs\\lib"
    from configurations.runtime
    into "$buildDir\\libs\\lib"
    from configurations.compileClasspath
    into "$buildDir\\libs\\lib"
}

// 拷贝配置文件
task copyConfigFile(type: Copy) {
    // 清除现有的配置目录
    delete "$buildDir\\libs\\config"
    from('src/main/resources')
    into 'build/libs/config'
}

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

    // 指定依赖包的路径
    manifest {
        attributes "Manifest-Version": 1.0,
                'Class-Path': configurations.compileClasspath.files.collect { "lib/$it.name" }.join(' ')
    }
}
  • 6
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 48
    评论
对于Spring Boot和Vue的前后端分离项目,你可以按照以下步骤进行打包部署到服务器: 1. 后端部署: - 将Spring Boot项目打包成可执行的JAR文件。可以使用Maven或Gradle构建工具进行打包。 - 将打包好的JAR文件上传到服务器上。 - 在服务器上安装Java运行环境,并配置好环境变量。 - 使用命令行运行JAR文件,命令类似于 `java -jar your-application-name.jar`。 2. 前端部署: - 在本地使用Vue的构建工具(如Vue CLI)进行项目构建。运行 `npm run build` 命令将前端代码打包成静态资源。 - 将打包生成的静态资源文件上传到服务器上的合适目录。 3. 部署Web容器: - 安装和配置一个Web容器,如Apache Tomcat或Nginx。 - 配置Web容器的虚拟主机或代理设置,将后端请求转发到Spring Boot应用的地址和端口。 - 将前端打包生成的静态资源文件部署在Web容器中,通过配置访问路径映射到对应的URL。 4. 配置数据库: - 如果你的项目使用了数据库,确保在服务器上安装了相应的数据库,并且创建了对应的数据库和表结构。 - 在Spring Boot项目的配置文件配置数据库连接信息,确保应用能够连接到数据库。 5. 启动应用: - 启动后端应用,运行Spring Boot项目的JAR文件。 - 启动Web容器,确保前端静态资源能够被访问到。 通过以上步骤,你就可以将Spring Boot和Vue的前后端分离项目成功打包部署到服务器上了。请根据你的具体情况和服务器环境进行相应的配置和调整。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ruiurrui

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值