Spring Boot项目打包和运行的操作方法

2025-05-15 02:50

本文主要是介绍Spring Boot项目打包和运行的操作方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《SpringBoot项目打包和运行的操作方法》SpringBoot应用内嵌了Web服务器,所以基于SpringBoot开发的web应用也可以独立运行,无须部署到其他Web服务器中,下面以打包dem...

一、打包为JAR包并运行

        Spring Boot 应用内嵌了 Web 服务器,所以基于 Spring Boot 开发的 web应用也可以独立运行,无须部署到其他 Web服务器中。下面以打包demo_test1项目为例,将 Spring Boot 项目打包为可执行的 JAR 包并运行,具体操作如下。

1.打包为可执行的 JAR 包

(1)添加Maven打包插件

        SpringBoot程序是基于 Maven 创建的,在对SpringBoot 项目进行打包前,需要在项目pom.XML文件中加入 Maven 打包插件,Spring Boot 为项目打包提供了整合后的 Maven 打包插件 spring-boot-maven-China编程plugin,可以直接使用,具体代码如下。

<build>
    <plugins>
        <!--Maven打包插件-->
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>${spring-boot.version}</version>
        </plugin>
    </plugins>
</build>

(2)使用IDEA进行打包

        在Maven中提供了package 打包指令,IDEA 中也提供了非常便捷的项目打包支持。在此选择在IDEA中对项目进行打包。在IDEA中单击右侧的“Maven”工具栏,会弹出 Maven 的操作界面,如图所示。

Spring Boot项目打包和运行的操作方法

        Lifecycle(生命周期)下展示了 Maven 项目构建生命周期中常用的命令,选中对应的命令双击后可以快速执行该Maven 命令。其中,clean 命令可以清除所有在构建过程中生成的文件,test 命令可以使用合适的单元测试框架来测试编译的源代码,package 命令可以完成项目编译、单元测试、打包功能。

        为了确保打http://www.chinasem.cn包后的项目为最新编译的代码,并且不包含测试阶段的代码,可以在打创前先执行 clean 命令,在跳过测试阶段的模块后进行打包。首先在 Maven 操作界面中双击“clean”执行清除 target 操作,然后单击界面上方的

Spring Boot项目打包和运行的操作方法

图标设置打包时跳过测试阶段的模块,最后双击“package”执行打包操作。执行打包操作后,会在控制台中输出打包的结果,如果打包成功会在项目的target 文件夹下创建项目对应的可执行JAR包,如图所示。

Spring Boot项目打包和运行的操作方法

2.运行 JAR 包

        一个可执行的 JAR包可以由 Java虚拟机(Java Virtual MAChine,JVM)直接执行而无须事先提取文件或者设置类路径。对此可以直接使用Java命令运行可执行的JAR包,运行JAR 包的命令的语法格式如下。

java -jar JAR包名称

JAR包名称为包含 JAR后缀的完整名称。

        运行JAR包时可以选择在IDEA中或者在cmd窗口中执行,这里选择在cmd窗口中执行。在本地打开项目的target 文件夹,如图所示。

Spring Boot项目打包和运行的操作方法

        在地址栏中输人“cmd”后按下“Enter”键,在当前文件夹路径下打开 cmd窗口,并在弹出的 cmd 窗口中使用 Java 命令运行 chapter01-0.0.1-SNAPSHOT.jar,如图所示。

Spring Boot项目打包和运行的操作方法

&http://www.chinasem.cnnbsp;       可以看出,Spring Boot项目打成的JAR 包已经成功运行,并显示了默认的端口号8080。需要注意的是,由于执行Java命令需要计算机中安装了Java的JDK环境,如果没有安装的话,执行后会报错。
        JAR 包运行后,可以对项目进行访问,以测试打包后的效果,在浏览器中访问 http://localhost:8080,如图所示。

Spring Boot项目打包和运行的操作方法

二、打包为WAR包并运行

        虽然通过 Spring Boot内嵌的Tomcat 可以将项目打成JAR包后直接运行,但每个JAR包中都会包含独立的 web 容器,对服务器的使用消耗会比较大。当想要在一个 Web容器中运行多个项目时,可以把每个项目打包成一个WAR包,然后部署到Web容器中运行下面以打包demo_test1项目为例,将Spring Boot项目打包为WAR 包并运行,具体操作如下。

1.打包为可执行的 WAR 包

(1)声明打包方式为war

        默认情况下创建的 Spring Boot 项目打包方式为jar,要将项目打包为WAR包,需要在项目的pom.xml文件中声明当前项目的打包方式为war。打开demo_test1项目的 pom.xml文件,使用<packaging>标签声明项目打包方式为 war,如图。

Spring Boot项目打包和运行的操作方法

(2)排除内置 Tomcat

        Spring Boot 为项目提供了内嵌的 Tomcat 服务器,使用外部的 Tomcat 时,需要在 pom.xml文件中排除内置的Tomcat,具体代码如下。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
    </exclusions>
</dependency>

        在上述代码中,在spring-boot-starter-web的依赖中使用<exclusion>标签声明排除该启
动器中的 Tomcat。

(3)添加Tomcat 依赖

        排除内置的Tomcat后,需要在 pom.xml文件中手动添加 Tomcat的依赖,以便在后续开发中使用对应的 API,具体代码如下。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <!--仅在编译和测试阶段使用,不会被打包到war包中-->
    <scope>provided</scope>
</dependency>

        在上述代码中添加了 Tomcat 的依赖,由于对应 Tomcat 的依赖只需在编译和测试阶段使用,所以使用<scope>标签将该依赖的作用范围指定在编译和测试阶段,避免打包时将对应的依赖打包到 WAR 包中。

(4)添加插件

在项目的 pom.xml 文件中定义打包插件,以及项目打包后包的名称具体代码如下。

<build>
    <finalName>demo_test1_war</finalName>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>${spring-boot.version}</version>
        </plugin>
    </plugins>
</build>

        在上述代码中,使用<finalName>标签用于指定项目打包后的名称;<plugin>标签用于指定打包插件。

(5)修改 Spring Boot启动类

        Spring Boot启动项目的方式有很多种,使用外置 Tomcat时,默认启动类需要继承 SpringBootServletInitializer 类,并重写configure()方法。SpringBooServletInitializer 执行时,会通过重写的 confgure()方法中的 SpringApplicationBuilder 实例构建并封装 SpringApplication 对象,并最终调用SpringApplicationrun()方法进行项目的启动。修改后的 Spring Boot 启动类如下面代码所示。

package com.merlin.demo_test1;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
@ServletComponentScan // 开启基于注解方式的Servlet组件扫描支持
@SpringBootApplication
public class DemoTest1Application extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(DemoTest1Application.class);
    }
    public static void main(String[] args) {
        SpringApplication.run(DemoTest1Application.class, argsBvazLl);
    }
}

        在上述代码中,启动类 DemoTest1Application继承SpringBootServletInitializer 类并重写configure()方法,在confgure()方法中,sources(Dewww.chinasem.cnmoTest1Application.class)方法的参数必须是项目主程序的启动类。需要说明的是,为Spring Boot提供启动的Servlet 初始化器 SpringBootServletInitializer 时,典型的做法就是让主程序启动类继承 SpringBootServletInitializer 类并实现 confgure()方法;除此之外,还可以在项目中单独提供一个继承 SpringBootServletInitializer 的子类,并实现 confgure()方法。
        至此,将项目打包为WAR包的准备工作已经完成,下面参照之前使用Maven工具栏中的命令打包项目的过程,将项目进行打包,打包后的结果如图所示。

Spring Boot项目打包和运行的操作方法

        从上图可以看出,控制台输出“BUILD SUCCESS”等信息,并且在项目的target 文件夹下创建了项目名称为demo_test1_war的WAR包,说明成功将项目打包为可执行 WAR 包。

错误信息:

Spring Boot项目打包和运行的操作方法

解决方法:在src/main/webapp/WEB-INF/目录下创建一个简单的web.xml文件,内容可以是最小化的配置:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
</beans>

然后clean后再package打包一次即可。

2.运行 WAR 包

        将打包好的 WAR包复制到本地Tomcat安装目录下的webapps文件夹中,在cmd窗口中执行 Tomcat 安装目录下 bin 目录中的 startup.BAT 命令启动 TomcatTomcat 启动后,执行效果如图所示。

Spring Boot项目打包和运行的操作方法

        从上图可以看出,Tomcat启动成功。Tomcat启动时会自动解压Tomcat安装目录下的 webapps 文件夹中的 WAR 包,并部署在Tomcat中,此时可以对项目进行访问。需要说明的是,对这种使用外部Tomcat 部署的项目进行访问时,必须加上项目名称,即打包成WAR 包后的项目全名,例如访问demo_test1_war项目映射路径为根目录,其对应的请求地址为“http://http://localhost:8080/demo_test1_war/”,在浏览器中的访问效果如下图所示。

Spring Boot项目打包和运行的操作方法

        从上图可以得出,将打包的 WAR 包部署到外部Tomcat后,可以正常对项目的资源进行访问。
需要注意的是,Spring Boot 2.7.6默认内嵌 Tomcat 的版本为9.0.69,将指定版本的 Spring Boot 项目以 WAR 包形式部署到外部Tomcat 中时,应尽量使用与 Spring Boot 项目匹配的Tomcat 版本进行项目部署,否则在部署过程中可能出现异常。

到此这篇关于Spring Boot项目打包和运行的文章就介绍到这了,更多相关Spring Boot打包和运行内容请搜索编程China编程(www.chinasem.cn)以前的文章或继续浏览下面的相关文章希望大家以后多多支持China编程(www.chinasem.cn)!

这篇关于Spring Boot项目打包和运行的操作方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1154632

相关文章

SpringBoot连接Redis集群教程

《SpringBoot连接Redis集群教程》:本文主要介绍SpringBoot连接Redis集群教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 依赖2. 修改配置文件3. 创建RedisClusterConfig4. 测试总结1. 依赖 <de

SpringBoot+Redis防止接口重复提交问题

《SpringBoot+Redis防止接口重复提交问题》:本文主要介绍SpringBoot+Redis防止接口重复提交问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录前言实现思路代码示例测试总结前言在项目的使用使用过程中,经常会出现某些操作在短时间内频繁提交。例

SpringSecurity显示用户账号已被锁定的原因及解决方案

《SpringSecurity显示用户账号已被锁定的原因及解决方案》SpringSecurity中用户账号被锁定问题源于UserDetails接口方法返回值错误,解决方案是修正isAccountNon... 目录SpringSecurity显示用户账号已被锁定的解决方案1.问题出现前的工作2.问题出现原因各

Java继承映射的三种使用方法示例

《Java继承映射的三种使用方法示例》继承在Java中扮演着重要的角色,它允许我们创建一个类(子类),该类继承另一个类(父类)的所有属性和方法,:本文主要介绍Java继承映射的三种使用方法示例,需... 目录前言一、单表继承(Single Table Inheritance)1-1、原理1-2、使用方法1-

k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)

《k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)》本文记录在K8s上运行的MySQL/MariaDB备份方案,通过工具容器执行mysqldump,结合定时任务实... 目录前言一、获取需要备份的数据库的信息二、备份步骤1.准备工作(X86)1.准备工作(arm)2.手

Spring @Scheduled注解及工作原理

《Spring@Scheduled注解及工作原理》Spring的@Scheduled注解用于标记定时任务,无需额外库,需配置@EnableScheduling,设置fixedRate、fixedDe... 目录1.@Scheduled注解定义2.配置 @Scheduled2.1 开启定时任务支持2.2 创建

SpringBoot中使用Flux实现流式返回的方法小结

《SpringBoot中使用Flux实现流式返回的方法小结》文章介绍流式返回(StreamingResponse)在SpringBoot中通过Flux实现,优势包括提升用户体验、降低内存消耗、支持长连... 目录背景流式返回的核心概念与优势1. 提升用户体验2. 降低内存消耗3. 支持长连接与实时通信在Sp

Spring Boot 实现 IP 限流的原理、实践与利弊解析

《SpringBoot实现IP限流的原理、实践与利弊解析》在SpringBoot中实现IP限流是一种简单而有效的方式来保障系统的稳定性和可用性,本文给大家介绍SpringBoot实现IP限... 目录一、引言二、IP 限流原理2.1 令牌桶算法2.2 漏桶算法三、使用场景3.1 防止恶意攻击3.2 控制资源

Mac系统下卸载JAVA和JDK的步骤

《Mac系统下卸载JAVA和JDK的步骤》JDK是Java语言的软件开发工具包,它提供了开发和运行Java应用程序所需的工具、库和资源,:本文主要介绍Mac系统下卸载JAVA和JDK的相关资料,需... 目录1. 卸载系统自带的 Java 版本检查当前 Java 版本通过命令卸载系统 Java2. 卸载自定

springboot下载接口限速功能实现

《springboot下载接口限速功能实现》通过Redis统计并发数动态调整每个用户带宽,核心逻辑为每秒读取并发送限定数据量,防止单用户占用过多资源,确保整体下载均衡且高效,本文给大家介绍spring... 目录 一、整体目标 二、涉及的主要类/方法✅ 三、核心流程图解(简化) 四、关键代码详解1️⃣ 设置