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

相关文章

Java方法重载与重写之同名方法的双面魔法(最新整理)

《Java方法重载与重写之同名方法的双面魔法(最新整理)》文章介绍了Java中的方法重载Overloading和方法重写Overriding的区别联系,方法重载是指在同一个类中,允许存在多个方法名相同... 目录Java方法重载与重写:同名方法的双面魔法方法重载(Overloading):同门师兄弟的不同绝

Spring配置扩展之JavaConfig的使用小结

《Spring配置扩展之JavaConfig的使用小结》JavaConfig是Spring框架中基于纯Java代码的配置方式,用于替代传统的XML配置,通过注解(如@Bean)定义Spring容器的组... 目录JavaConfig 的概念什么是JavaConfig?为什么使用 JavaConfig?Jav

Java数组动态扩容的实现示例

《Java数组动态扩容的实现示例》本文主要介绍了Java数组动态扩容的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1 问题2 方法3 结语1 问题实现动态的给数组添加元素效果,实现对数组扩容,原始数组使用静态分配

Java中ArrayList与顺序表示例详解

《Java中ArrayList与顺序表示例详解》顺序表是在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构,:本文主要介绍Java中ArrayList与... 目录前言一、Java集合框架核心接口与分类ArrayList二、顺序表数据结构中的顺序表三、常用代码手动

JAVA项目swing转javafx语法规则以及示例代码

《JAVA项目swing转javafx语法规则以及示例代码》:本文主要介绍JAVA项目swing转javafx语法规则以及示例代码的相关资料,文中详细讲解了主类继承、窗口创建、布局管理、控件替换、... 目录最常用的“一行换一行”速查表(直接全局替换)实际转换示例(JFramejs → JavaFX)迁移建

Spring Boot Interceptor的原理、配置、顺序控制及与Filter的关键区别对比分析

《SpringBootInterceptor的原理、配置、顺序控制及与Filter的关键区别对比分析》本文主要介绍了SpringBoot中的拦截器(Interceptor)及其与过滤器(Filt... 目录前言一、核心功能二、拦截器的实现2.1 定义自定义拦截器2.2 注册拦截器三、多拦截器的执行顺序四、过

JAVA线程的周期及调度机制详解

《JAVA线程的周期及调度机制详解》Java线程的生命周期包括NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING和TERMINATED,线程调度依赖操作系统,采用抢占... 目录Java线程的生命周期线程状态转换示例代码JAVA线程调度机制优先级设置示例注意事项JAVA线程

JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)

《JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)》:本文主要介绍如何在IntelliJIDEA2020.1中创建和部署一个JavaWeb项目,包括创建项目、配置Tomcat服务... 目录简介:一、创建项目二、tomcat部署1、将tomcat解压在一个自己找得到路径2、在idea中添加

Java使用Spire.Doc for Java实现Word自动化插入图片

《Java使用Spire.DocforJava实现Word自动化插入图片》在日常工作中,Word文档是不可或缺的工具,而图片作为信息传达的重要载体,其在文档中的插入与布局显得尤为关键,下面我们就来... 目录1. Spire.Doc for Java库介绍与安装2. 使用特定的环绕方式插入图片3. 在指定位

springboot的controller中如何获取applicatim.yml的配置值

《springboot的controller中如何获取applicatim.yml的配置值》本文介绍了在SpringBoot的Controller中获取application.yml配置值的四种方式,... 目录1. 使用@Value注解(最常用)application.yml 配置Controller 中