SpringBoot+gradle项目中的两种jar包(依赖包和可运行包)及如何在Idea中打包

    SpringBoot项目中有两种jar包,一种是由gradle(maven)自动构建工具引入的第三方jar包(依赖包)  另一种是SpringBoo项目打的可以执行的jar包(可运行包)  可以通过   java -jar 包名.jar   运行。

    之前没有专门研究过这两者的区别,直到最近搭建自己的maven私服,将SpringBoot项目打成jar包作为其他项目的依赖包时候报找不到类的错误,才简单研究了一下两者的区别和如何打包。

一、两者的区别

    于是我在idea中针对同一个SpringBoot项目打了这两种包,我们看一下两者的文件结构。

    首先我们看看可运行jar包,在可运行jar包中我们的代码是存在于BOOT-INF/classes/ 目录下,还有就是META-INF文件夹中MANIFEST.MF文件

我们可以看到文件里面Start-Class为启动类,Spring-Boot-Classes为编译后代码存放的位置,Spring-Boot-Lib为第三方依赖包存放的位置以及SpringBoot版本信息等等。

   再来看看依赖包,根目录就相当于项目的classpath,直接就是代码。而META-INF/MANIFEST.MF文件中没有上面那些内容。

  

 

二、如何打包

    我这里SpringBoot版本是2.2.6.RELEASE 开发工具是idea、自动构建工具是gradle.

    1、可运行jar包打包。

    这个比较简单,在idea直接打开gradle界面Tasks->build->bootJar双击执行 即可。

   这个jar包可通过  java -jar命令启动。

    2、依赖jar包打包

   我们可以看到在Tasks中有一个jar命令 ,但是双击执行之后发现没有生成jar包,通过查阅文档发现,需要在build.gralde中加个配置。

文档链接:https://docs.spring.io/spring-boot/docs/2.1.0.RELEASE/gradle-plugin/reference/html/ 

   我们在build.gradle中加入以上配置,再次执行jar任务,即可将项目打成依赖包。(  还有一种情况会用到以上配置,就是在多模块项目中,各个模块之间项目依赖,如果不加这个配置,默认就是可运行包,就会报找不到类的报错,切记注意。

    不管是可运行jar包和依赖包打包成功,都会保存到build/libs文件夹下,由于名字相同所以会存在项目覆盖的情况,所以需要在build.gradle中加入配置

//可运行包的分类器(打包成功后的会以项目名-boot为包名)
bootJar.classifier = 'boot'

 

 

  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值