Spring Boot 如何打成 jar 包

发表于 2022-12-04

前言

Spring Boot 项目支持直接打成 jar 包就可以运行。因为 Spring Boot 采用内置的 Tomcat 作为 Web 容器,所以可以直接打成 jar 包并通过 java -jar xxxx.jar 的形式运行。

其实打包的常用方式有:

  1. 使用 IDE 开发工具的
  2. 使用 Maven 插件

因为 Maven 的打包形式更为通用,不受限 IDE 工具。所以这里主要记录使用 Maven 插件的打包方式。

构建项目结构

打包往往都是整个项目构建时需要关心,所以简单说一下创建 Spring Boot 项目的方式。

指定 parent

通过指定 parent 进行依赖管理,这种方式现在并不推荐使用。例如微服务这样的形式,使用父级项目管理所有依赖会导致某些项目存在不需要的依赖。

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.6.3</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

配置 dependency 版本管理

通过 dependency 指定该项目基于 Spring Boot 的各个依赖的版本,让我们不需要关心相关依赖的版本和冲突问题。由于 dependency 定义了很多依赖的版本,我们在引入依赖时可以忽略版本直接引入。

<properties>
    <!-- Spring Boot 版本 -->
    <spring-boot-dependencies.version>2.6.3</spring-boot-dependencies.version>
    <java.version>17</java.version>
</properties>
<modules>
    <module>blog-statistics-core</module>
    <module>blog-statistics-web</module>
</modules>
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>${spring-boot-dependencies.version}</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>
            <version>${spring-boot-dependencies.version}</version>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

开始打包

到需要打包的项目下执行 Maven 命令:mvn clean package