Spring Boot 项目支持直接打成 jar 包就可以运行。因为 Spring Boot 采用内置的 Tomcat 作为 Web 容器,所以可以直接打成 jar 包并通过 java -jar xxxx.jar
的形式运行。
其实打包的常用方式有:
因为 Maven 的打包形式更为通用,不受限 IDE 工具。所以这里主要记录使用 Maven 插件的打包方式。
打包往往都是整个项目构建时需要关心,所以简单说一下创建 Spring Boot 项目的方式。
通过指定 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 指定该项目基于 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