介绍
springboot不是java web工程,通过maven,可以打成jar包时,同时要将springboot启动程序和依赖的jar包一并打成jar包
注意:打包失败分若干情况,本文的方式不一定适合你
依据官网:
官网方式
注意: 平时开发程序时,不要加这个配置,打包速度会慢一些
这种打包方式,适用于 继承 springboot,如下:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.2.RELEASE</version>
</parent>
修改pom.xml文件
增加下面代码:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
方式二
注意: 平时开发程序时,不要加这个配置,打包速度会慢一些
适用于 dependencyManagement 方式添加 springboot,如下:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.2.2.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
修改pom.xml文件
增加下面代码:
注意: 如果是聚合工程,放在总工程即可
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
生成jar包
通过maven生成jar包
双击 package,或者 选中 package 然后点击绿色按钮运行
在工程目录下的 target 文件夹下,就有 xxx.jar
jar包简单分析
SpringBoot 的可执行jar包,又称fat jar ,是包含所有依赖的 jar 包,jar 包中嵌入了除 java 虚拟机以外的所有依赖,是一个 all-in-one jar 包。
fat jar中主要增加了两部分:
- lib目录,存放的是Maven依赖的jar包文件
- spring boot loader相关的类。
fat jar 目录结构
├─BOOT-INF
│ ├─classes //本工程的类
│ └─lib //本工程依赖的jar包(spring、log4j、tomcat等)
├─META-INF
│ ├─maven
│ ├─app.properties
│ ├─MANIFEST.MF
└─org //spring boot loader相关的类
└─springframework
└─boot
└─loader
├─archive
├─data
├─jar
└─util
运行
内嵌servlet容器环境(tomcat或jetty),所以可执行运行
java -jar xxx.jar
错误
运行 xxx.jar时,可能会报错:没有主清单属性,一般引发此错误的情况较多,自行百度吧



