【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 groupIdorg.springframework.boot/groupId artifactIdspring-boot-maven-plugin/artifactId configuration !-- 是否生成可执行的 JAR 包 -- mainClasscom.example.demo.DemoApplication/mainClass /configuration /plugin !-- 可选配置 Maven Shade 插件用于生成 Fat JAR -- plugin groupIdorg.apache.maven.plugins/groupId artifactIdmaven-shade-plugin/artifactId version3.2.1/version executions execution phasepackage/phase goals goalshade/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 groupIdorg.springframework.boot/groupId artifactIdspring-boot-maven-plugin/artifactId configuration mainClasscom.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 groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency !-- Spring Boot Starter Tomcat (optional, Spring Boot 默认会包含 Tomcat) -- dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-tomcat/artifactId scopeprovided/scope /dependency /dependencies build plugins !-- Spring Boot Maven Plugin -- plugin groupIdorg.springframework.boot/groupId artifactIdspring-boot-maven-plugin/artifactId configuration !-- 如果是 WAR 包指定主类 -- mainClasscom.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 的配置packagingwar/packagingDemoApplication.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 包。

相关新闻

汉明码 MATLAB Simulink 高斯白噪声信道(AWGN信道)以及BSC信道的误码率

汉明码 MATLAB Simulink 高斯白噪声信道(AWGN信道)以及BSC信道的误码率

汉明码 MATLAB Simulink 高斯白噪声信道(AWGN信道)以及BSC信道的误码率最近在折腾信道编码的仿真,发现用Simulink搞汉明码的误码率分析特别有意思。咱们先来瞅瞅汉明码在Simulink里怎么搭模型,顺便看看AWGN和BSC这两个经典信道怎么…

2026/7/3 9:00:47 阅读更多 →
自动化锡膏管理设备源头厂家

自动化锡膏管理设备源头厂家

引言随着电子制造业的快速发展,自动化锡膏管理设备在SMT(表面贴装技术)生产中的重要性日益凸显。本文将深入探讨自动化锡膏管理设备的行业现状、痛点分析、技术发展趋势以及旭同实业在该领域的创新解决方案。行业现状与痛点分析技术瓶颈突出传…

2026/5/17 8:02:09 阅读更多 →
构造兄弟滤波器组

构造兄弟滤波器组

如何构造解析小波 解析小波变换将Hilbert变换与小波分析紧密结合在一起,具有更强的自适应分析能力。 本程序使用双树复小波变换创建近似解析小波,并仔细构造两个滤波器组中的 FIR 滤波器,获得了近似解析小波变换并继承双树变换的优势。 使用第…

2026/7/4 8:16:49 阅读更多 →

最新新闻

JWT认证原理与ASP.NET Core实践指南

JWT认证原理与ASP.NET Core实践指南

1. JWT认证基础与核心原理在构建现代Web API时,认证机制是保障系统安全的第一道防线。JWT(JSON Web Token)作为一种轻量级的开放标准(RFC 7519),已经成为RESTful API认证的主流方案。与传统的Session-Cooki…

2026/7/4 19:13:29 阅读更多 →
Web API开发指南:从基础概念到RESTful实践

Web API开发指南:从基础概念到RESTful实践

1. Web开发与API基础概念 在现代Web开发中,API(应用程序编程接口)已经成为连接前后端、整合第三方服务的关键技术。简单来说,API就像餐厅的服务员 - 你不需要知道厨房如何准备食物,只需通过标准化的菜单(AP…

2026/7/4 19:11:28 阅读更多 →
技术文章SEO与分享优化实战指南

技术文章SEO与分享优化实战指南

1. 内容创作与SEO的残酷现实刚入行那会儿,我花两周写完一篇自认为干货十足的技术文章,发布后每天刷新后台数据,结果阅读量始终停留在个位数。直到某天同事随口问:"你文章的关键词布局了吗?分享卡片优化过没&#…

2026/7/4 19:11:28 阅读更多 →
UE5 C++ 射线检测多物体:LineTraceMultiByObjectType详解

UE5 C++ 射线检测多物体:LineTraceMultiByObjectType详解

1. UE5 C 射线检测多物体的按通道与按对象类型 LineTraceMultiByObjectType 详解在虚幻引擎5(UE5)开发中,射线检测(Line Trace)是最常用的物理检测手段之一。今天我要分享的是如何通过C实现多物体射线检测,…

2026/7/4 19:09:28 阅读更多 →
Unity编辑器工具:高效处理3D模型的实用技巧

Unity编辑器工具:高效处理3D模型的实用技巧

1. Unity编辑器工具概述:模型处理的核心利器在Unity开发流程中,Editor工具链是提升工作效率的关键组件。针对3D模型处理这一高频需求,Unity提供了一系列原生和可扩展的编辑器功能,能够覆盖从资源导入到场景配置的全流程。不同于常…

2026/7/4 19:05:27 阅读更多 →
Mirror网络库插件优化与实战应用指南

Mirror网络库插件优化与实战应用指南

1. Mirror网络库插件深度解析Mirror作为Unity环境下广受欢迎的高性能网络库,其插件系统在实际项目开发中扮演着关键角色。这次我们将深入探讨第6代插件的核心特性与实战应用技巧,这些经验来自三个不同规模项目的实际验证。1.1 插件架构设计理念Mirror插件…

2026/7/4 19:05:27 阅读更多 →

日新闻

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 正式发布,这是一个关键的安全修复版本,修复了多个方面的问题,还对部分功能进行了优化。 安全修复亮点 此次发布在安全修复上表现突出。binprot 避免了项目引用计数溢出,mcmc 因安全问题提升了上游版本号&#xf…

2026/7/4 0:04:29 阅读更多 →
终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案 【免费下载链接】HMCL A Minecraft Launcher which is multi-functional, cross-platform and popular 项目地址: https://gitcode.com/gh_mirrors/hm/HMCL HMCL(Hello Minecraft! Lau…

2026/7/4 0:06:29 阅读更多 →
KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

1. KMX63与PIC18F66K40的硬件协同架构解析KMX63作为一款三轴加速度计和磁力计组合传感器,与PIC18F66K40微控制器的搭配堪称嵌入式HMI开发的黄金组合。这套硬件组合的核心优势在于KMX63提供的高精度运动感知能力与PIC18F66K40强大的信号处理能力形成了完美互补。KMX6…

2026/7/4 0:06:29 阅读更多 →

周新闻

月新闻