Spring Boot程序的打包与运行:构建高效部署流程

引言

在现代应用开发中,高效的打包和部署流程对于项目的开发、测试和上线至关重要。Spring Boot作为一种快速开发框架,提供了方便的打包工具和内嵌式的Web服务器,使得打包和运行变得更加简单。本文将研究在Spring Boot应用中如何进行打包,帮助开发者构建高效的部署流程。

打包Spring Boot 应用

Spring Boot 提供了多种方式来打包应用,常见的有 Maven 插件和 Gradle 插件。以下以 Maven 为例:

Maven 插件

在项目的 pom.xml 文件中,添加 Maven 插件配置:

XML 复制代码
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

通过执行以下命令进行打包:

bash 复制代码
mvn clean package

打包完成后,会在 target 目录下生成可执行的 JAR 文件。

运行Spring Boot 应用

Spring Boot 应用可以通过多种方式运行,包括使用内嵌的 Web 服务器、作为 WAR 文件部署到外部 Servlet 容器等。

使用内嵌的 Web 服务器

执行以下命令运行应用:

bash 复制代码
java -jar your-application.jar
//或
java --jar your-application.jar --server.port=80
//或
java --jar springboot.jar ---server.port=80 --logging.level.root=debug

这将启动嵌入式的 Tomcat 服务器,并运行 Spring Boot 应用。

外部 Servlet 容器

如果希望将应用部署到外部 Servlet 容器,需要将应用打包为 WAR 文件。在 pom.xml 中添加以下配置:

XML 复制代码
<packaging>jar</packaging>
//修改为
<packaging>war</packaging>
引入依赖
XML 复制代码
  <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <!-- 去除内嵌tomcat -->
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!--添加servlet的依赖-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>

    </dependencies>
添加启动类

如果是 war 包发布,需要增加 SpringBootServletInitializer ⼦类,并重写其 configure⽅法,或者将 main 函数所在的类继承 SpringBootServletInitializer , 并重写configure ⽅法
当时打包为 war 时上传到 tomcat 服务器中访问项⽬始终报 404 错就是忽略了这个步骤!!!

java 复制代码
@SpringBootApplication
public class JavaToJarAdmin  extends SpringBootServletInitializer {
    public static void main(String[] args) {
        SpringApplication.run(JavaToJarAdmin.class, args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(JavaToJarAdmin.class);
    }

}

然后执行 Maven 命令进行打包:

bash 复制代码
mvn clean package

打包完成后,会在 target 目录下生成可执行的 WAR文件。


使⽤外部 Tomcat 运⾏该 war ⽂件(把 war ⽂件直接丢到 tomcat 的 webapps⽬录)

启动tomcat
访问 http://localhost:8080/war包名/http://localhost:8080/JavaToJar-1.0-SNAPSHOT/
注意:
将项⽬打成 war 包,部署到外部的 tomcat 中,这个时候,不能直接访问 spring boot 项⽬中配置⽂件配置的端⼝。 application.yml 中配置的 server.port 配置的 是spring boot 内置的 tomcat 的端⼝号 , 打成 war 包部署在独⽴的 tomcat 上之后 , 配置的server.port 是不起作⽤的。⼀定要注意这⼀点。

结语

通过本文的介绍,你学会了如何使用 Maven 插件打包 Spring Boot 应用,灵活的打包和部署。结合内嵌的 Web 服务器和外部 Servlet 容器,将有助于构建一个稳定可靠的部署流程,提高开发和运维效率。

相关推荐
梵得儿SHI4 分钟前
Java 反射机制深度解析:从运行时 “解剖” 类的底层逻辑
java·开发语言·反射·反射机制·private·类成员·反射的三大核心功能
CodeSheep4 分钟前
大家有没有发现一个奇特现象:你能在一个公司工作 12 年以上,无论你多忠诚多卖力,一旦公司赚的少了,那你就成了“眼中钉肉中刺”
前端·后端·程序员
豆沙沙包?11 分钟前
2025年--Lc188--931. 下降路径最小和(多维动态规划,矩阵)--Java版
java·矩阵·动态规划
JAVA学习通20 分钟前
Spring AI 1.0 GA 深度解析:Java生态的AI革命已来
java·人工智能·spring·springai
南囝coding33 分钟前
《独立开发者精选工具》
前端·后端·开源
IT_陈寒37 分钟前
JavaScript 性能优化的 7 个致命陷阱:我从 P5 到 P8 的核心突破都在这里!
前端·人工智能·后端
黄焖鸡能干四碗43 分钟前
MES生产执行制造系统建设(Java+Mysql)
java·大数据·开发语言·信息可视化·需求分析
舒克日记1 小时前
基于springboot的民谣网站的设计与实现
java·spring boot·后端
风象南1 小时前
除了JSON/XML,你还应该了解的数据描述语言ASN.1 —— 附《SpringBoot实现ASN.1在线解析工具》
后端
JaguarJack1 小时前
深入理解 PHP-FPM 的最佳配置
后端·php