springboot生成(打包)jar包和执行(运行)

介绍

springboot不是java web工程,通过maven,可以打成jar包时,同时要将springboot启动程序和依赖的jar包一并打成jar包

注意:打包失败分若干情况,本文的方式不一定适合你

依据官网:

https://docs.spring.io/spring-boot/docs/2.2.8.RELEASE/reference/html/getting-started.html#getting-started

官网方式

注意: 平时开发程序时,不要加这个配置,打包速度会慢一些

这种打包方式,适用于 继承 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中主要增加了两部分:

  1. lib目录,存放的是Maven依赖的jar包文件
  2. 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时,可能会报错:没有主清单属性,一般引发此错误的情况较多,自行百度吧


原文出处:/show_1EF5ht6lR1ZQ.html