目录
一、打包可执行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
根据不同情况选择不同的打包配置。