SpringBoot打成jar包的结构
springboot通常会打成jar包,然后使用java -jar来进行执行,那么这个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
17Manifest-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包后的主类