SpringBoot
JAR包格式的不同
通过用maven install,我们可以在target目录下看到两个jar包
<!-- 打包的插件 -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
打出来的包路径图
我们可以发现有两个jar包
message-0.0.1-SNAPSHOT.jar | message-0.0.1-SNAPSHOT.jar.origin |
---|---|
有META-INF的目录,在MANIFEST.MF中会标记出启动类 | |
可执行 | 不可执行 |
有BOOT-INF,BOOT-INF也就是启动时指定的启动类以及相关依赖信息 | 无BOOT-INF |
不可以被其他包依赖 | 可以 |
origin包情况
# 文件内容 可以看到有启动类信息
# 这个对于我们来说也就是正常可执行类jar包
Manifest-Version: 1.0
Created-By: Maven Jar Plugin 3.2.0
Build-Jdk-Spec: 16
Implementation-Title: message
Implementation-Version: 0.0.1-SNAPSHOT
Main-Class: org.springframework.boot.loader.JarLauncher
Start-Class: com.tyrantqiao.jarvis.message.MessageApplication
Spring-Boot-Version: 2.5.2
Spring-Boot-Classes: BOOT-INF/classes/
Spring-Boot-Lib: BOOT-INF/lib/
Spring-Boot-Classpath-Index: BOOT-INF/classpath.idx
Spring-Boot-Layers-Index: BOOT-INF/layers.idx
不可执行包情况
Manifest-Version: 1.0
Created-By: Maven Jar Plugin 3.2.0
Build-Jdk-Spec: 16
Implementation-Title: message
Implementation-Version: 0.0.1-SNAPSHOT
打出可执行以及可依赖
如果想同时打出可依赖以及可执行的,修改下pom文件的maven配置
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!-- 代表生产出来的jar包名字,比如现在的会生成message-0.0.1-SNAPSHOT-running.jar -->
<classifier>running</classifier>
</configuration>
</plugin>
</plugins>
</build>