目录
一、打包可执行jar
二、打包非可执行jar
三、两种jar对比
springboot项目的pom文件中一般都配置了spring-boot-maven-plugin打包插件。
<!-- 打包插件依赖 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
一般情况下,只需要映入 spring-boot-maven-plugin 依赖即可,但是某些情况下还是需要额外配置部分参数。
一、打包可执行jar
可执行jar,包含了项目运行所需的所有jar,打包后可使用 java -jar xxx.jar 目录运行,譬如常用的SpringBoot的web项目,还有常规的application为web项目。
如果项目中存在多个main方法(多个主类),就需要配置<mainClass>指定主类
<!-- 打包插件依赖 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!-- 主类,入口 -->
<mainClass>com.zhh.zhhd.ZhhdApplication</mainClass>
<!-- <includeSystemScope>true作用:如果项目中存在本地jar,打成jar的同时将本地jar包也引入进去 -->
<includeSystemScope>true</includeSystemScope>
</configuration>
</plugin>
二、打包非可执行jar
非可执行jar中只有源码,不包含依赖的其他jar,非可执行jar一般都是用做依赖包,譬如我们项目的pom文件引入的各种第三方依赖包,这些依赖包一般都是不可以直接运行的。
非可执行jar,只需要在配置中添加标签:<skip>true</skip>
<!-- 打包插件依赖 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!-- 主类,入口 -->
<mainClass>com.zhh.zhhd.ZhhdApplication</mainClass>
<!-- <includeSystemScope>true作用:如果项目中存在本地jar,打成jar的同时将本地jar包也引入进去 -->
<includeSystemScope>true</includeSystemScope>
<!-- <skip>true</skip>:只打包源码,不是一个可执行(运行)jar,是一个依赖包
<skip>false</skip>:默认的值,包含源码和依赖包,是一个可执行(运行)jar
-->
<skip>true</skip>
</configuration>
</plugin>
作用:
<skip>true</skip>:只打包源码,不是一个可执行(运行)jar,是一个依赖包
<skip>false</skip>:默认的值,包含源码和依赖包,是一个可执行(运行)jar
三、两种jar对比
1)大小不一样
可执行jar包含了项目运行所需要的所有外部依赖包,非可执行jar只包含源码,所有大小不一样。
1)jar包的目录不一样
可执行jar,在源码class目录外层多了BOOT-INF目录,里面多了lib目录,lib下包含了所需的工作依赖jar,MANIFEST.MF文件中多了启动类的配置
非可执行jar
可执行jar
根据不同情况选择不同的打包配置。