0%

SpringBoot打成jar包的结构

SpringBoot打成jar包的结构

springboot通常会打成jar包,然后使用java -jar来进行执行,那么这个jar包里的结构是什么样的呢

springboot打成jar包的结构

其中

  • BOOT-INF 中包含的classes是我们程序中所有的代码编译后的class文件,lib是程序所引用的外部依赖

  • META-INF 这个应该就很熟悉了,java打包生成的清单文件,下面就是一个MANIFEST.MF文件的示例

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Manifest-Version: 1.0
    Implementation-Title: demo
    Implementation-Version: 0.0.1-SNAPSHOT
    Archiver-Version: Plexus Archiver
    Built-By: zhanghe
    Implementation-Vendor-Id: com.zhanghe.study
    Spring-Boot-Version: 1.5.9.RELEASE
    Implementation-Vendor: Pivotal Software, Inc.
    Main-Class: org.springframework.boot.loader.JarLauncher
    Start-Class: com.zhanghe.study.springboot.DemoApplication
    Spring-Boot-Classes: BOOT-INF/classes/
    Spring-Boot-Lib: BOOT-INF/lib/
    Created-By: Apache Maven 3.6.3
    Build-Jdk: 1.8.0_261
    Implementation-URL: http://projects.spring.io/spring-boot/springboot/


    看一下Main-Class发现并不是我们在项目中所写的main方法对应的类,而是springboot提供的JarLauncher,而Start-Class才是在项目中所写的main方法对应的类

  • springboot官方的代码,MANIFEST.MF中的Main-Class就在该包下,JarLauncher是打成jar包后的主类,WarLauncher是打成war包后的主类

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