【SpringBoot】Spring Boot 项目的打包配置
在 Spring Boot 项目中,打包是一个非常关键的过程,通常你会选择将应用打包成一个 JAR 或 WAR 文件,并且可能会包含一些额外的资源和配置。不同类型的项目(如标准 Spring Boot 项目、Spring Boot + HTML 项目、Spring Boot + Web 项目)需要的打包配置会有所不同。下面,我会从这三个角度出发,详细介绍每种类型的 Spring Boot 项目打包配置及其解析。
1. Spring Boot 项目的打包配置
对于一个标准的 Spring Boot 项目,通常我们会使用 Spring Boot Maven 插件 或 Spring Boot Gradle 插件 来打包。以下是 Maven 打包的常见配置。
pom.xml 中的配置
<build>
<plugins>
<!-- Spring Boot Maven Plugin -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!-- 是否生成可执行的 JAR 包 -->
<mainClass>com.example.demo.DemoApplication</mainClass>
</configuration>
</plugin>
<!-- 可选:配置 Maven Shade 插件用于生成 Fat JAR -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
配置说明:
spring-boot-maven-plugin:这是 Spring Boot 提供的 Maven 插件,用于将应用打包成可执行的 JAR 文件,支持内嵌的 Tomcat/Jetty 容器。
mainClass:指定 Spring Boot 主应用类的全限定名,Spring Boot 启动时会从这个类开始执行。
maven-shade-plugin:这个插件用于创建 Fat JAR,它将所有依赖和 Spring Boot 项目代码打包到一个 JAR 中,方便部署和运行。
打包方式:
执行 mvn clean package 命令后,会生成一个包含所有依赖的 可执行 JAR 文件,可以通过 java -jar xxx.jar 启动。
如果你的 Spring Boot 应用需要独立运行,打包成 JAR 是最佳选择。
2. Spring Boot + HTML 项目的打包配置
在一个包含 HTML 页面和前端资源(如 JavaScript、CSS)的 Spring Boot 项目中,前端资源通常放在 src/main/resources/static 目录中,Spring Boot 会自动提供静态文件服务。
pom.xml 中的配置
<build>
<plugins>
<!-- Spring Boot Maven Plugin -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>com.example.demo.DemoApplication</mainClass>
</configuration>
</plugin>
</plugins>
</build>
资源文件目录结构:
src
└── main
├── java
├── resources
│ ├── static
│ │ ├── index.html
│ │ └── css/
│ │ └── styles.css
│ ├── templates
│ │ └── index.html
│ └── application.properties
配置说明:
静态资源:Spring Boot 默认会扫描 src/main/resources/static、src/main/resources/public、src/main/resources/META-INF/resources 和 src/main/resources/resources 目录下的文件,并作为静态资源服务。如果你将 HTML 文件放在 static 文件夹下,Spring Boot 会直接提供服务。
模板引擎:如果你使用了 Thymeleaf 等模板引擎,HTML 文件应该放在 templates 目录下,Spring Boot 会自动处理动态模板的渲染。
打包方式:
执行 mvn clean package 命令后,Spring Boot 会将 static 中的所有文件打包到 JAR 包中的 /BOOT-INF/classes/static/ 目录中。当你运行应用时,静态资源可以通过 /static/ 路径访问。
如果需要将前端文件与 Spring Boot 应用一起打包,前端代码不需要额外的构建步骤(除非使用了 Webpack 或其他前端构建工具)。
3. Spring Boot + Web 项目的打包配置
对于一个包含 Web 层(如控制器、过滤器、拦截器等)的 Spring Boot 项目,通常涉及到内嵌的 Web 容器(如 Tomcat 或 Jetty)。你可以选择将其打包为 WAR 文件,以便在外部的容器中运行,或者使用内嵌的 Tomcat 作为默认的 Web 容器。
pom.xml 中的配置
<dependencies>
<!-- Spring Boot Starter Web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Spring Boot Starter Tomcat (optional, Spring Boot 默认会包含 Tomcat) -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<!-- Spring Boot Maven Plugin -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!-- 如果是 WAR 包,指定主类 -->
<mainClass>com.example.demo.DemoApplication</mainClass>
</configuration>
</plugin>
</plugins>
</build>
配置说明:
spring-boot-starter-web:用于支持 Spring MVC 功能,自动引入 Tomcat 作为嵌入式 Web 容器。你也可以使用其他容器,如 Jetty 或 Undertow。
spring-boot-starter-tomcat:如果你希望将应用部署到外部 Tomcat 容器中,需要将这个依赖的 scope 设置为 provided。如果你希望使用内嵌的 Tomcat,可以忽略此依赖,因为 Spring Boot 默认包含 Tomcat。
spring-boot-maven-plugin:用于打包时支持构建 WAR 文件。你可以配置 mainClass,指定应用的主类。
打包为 WAR 的配置:
<packaging>war</packaging>
DemoApplication.java 修改为支持 WAR 包:
如果你要打包成 WAR 包,你需要做一些额外的配置,使 Spring Boot 应用支持外部 Web 容器。需要修改主类来扩展 SpringBootServletInitializer。
@SpringBootApplication
public class DemoApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(DemoApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
打包方式:
执行 mvn clean package 命令后,Spring Boot 会根据 pom.xml 的配置生成一个 WAR 文件,WEB-INF 下包含 Web 层的资源和配置文件。部署到外部的 Tomcat 或其他容器中时,可以通过 java -jar 命令运行内嵌的 Tomcat。
总结
Spring Boot 基础项目:适合构建独立应用,打包成 JAR 包,包含所有依赖,配置 spring-boot-maven-plugin。
Spring Boot + HTML 项目:适用于前端静态资源服务,静态文件(如 HTML、CSS、JS)放在 src/main/resources/static 中,打包为 JAR 包。
Spring Boot + Web 项目:适用于需要 Web 层的应用,可以选择内嵌 Web 容器或部署到外部容器,打包为 JAR 或 WAR 包。需要使用 SpringBootServletInitializer 来支持 WAR 包。
原文地址:https://blog.csdn.net/web14786210723/article/details/144339189
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!