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

引言

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

打包Spring Boot 应用

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

Maven 插件

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

<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins>
</build>

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

mvn clean package

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

运行Spring Boot 应用

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

使用内嵌的 Web 服务器

执行以下命令运行应用:

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 中添加以下配置:

<packaging>jar</packaging>
//修改为
<packaging>war</packaging>
 引入依赖
  <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 错就是忽略了这个步骤!!!
@SpringBootApplication
public class JavaToJarAdmin  extends SpringBootServletInitializer {public static void main(String[] args) {SpringApplication.run(JavaToJarAdmin.class, args);}@Overrideprotected SpringApplicationBuilder configure(SpringApplicationBuilder application) {return application.sources(JavaToJarAdmin.class);}}

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

mvn clean package

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

使⽤外部 Tomcat 运⾏该 war ⽂件(把 war ⽂件直接丢到 tomcat webapps⽬录)
启动tomcat
访问 http://localhost:8080/war包名/icon-default.png?t=N7T8http://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 容器,将有助于构建一个稳定可靠的部署流程,提高开发和运维效率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/636234.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

外包干了5个月,技术退步明显...

先说一下自己的情况&#xff0c;大专生&#xff0c;18年通过校招进入武汉某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了四年的功能测…

【数据库】聊聊InnoDB存储引擎结构

在学习任何技术、框架、中间件的时候&#xff0c;我们都需要从一个宏观的角度先去了解一下大概视角&#xff0c;然后在通过剖定解牛的方式进行细分点的学习&#xff0c;同样对于任何存储结构来说&#xff0c;基本上都包含几块内容。 通信&#xff1a;解决信息传输问题、存储模型…

k8s资源介绍

Kubernetes架构图 Kubernetes系统用于管理分布式节点集群中的微服务或容器化应用程序&#xff0c;并且其提供了零停机时间部署、自动回滚、缩放和容器的自愈&#xff08;其中包括自动配置、自动重启、自动复制的高弹性基础设施&#xff0c;以及容器的自动缩放等&#xff09;等…

pytorch安装教程

安装pytorch 创建conda虚拟环境&#xff0c;选择安装电脑CUDA版本的安装即可 最新版&#xff1a;Start Locally | PyTorch 历史版本&#xff1a;Previous PyTorch Versions | PyTorch # CUDA 10.1 pip install torch1.8.1cu101 torchvision0.9.1cu101 torchaudio0.8.1 -f h…

上海智慧岛大数据云计算中心项目正式封顶!

上海智慧岛大数据云计算中心封顶仪式现场 1月15日&#xff0c;云端股份在上海智慧岛大数据云计算中心举行封顶仪式。云之端网络&#xff08;江苏&#xff09;股份有限公司&#xff08;以下称“云端股份”&#xff09;总经理贡伟力先生&#xff0c;常务副总张靖先生等公司成员&…

VS生成C++动态链接库DLL

1、官方文档&#xff1a; 在 Visual Studio 中创建 C/C DLL | Microsoft Learn 演练&#xff1a;创建和使用自己的动态链接库 (C) | Microsoft Learn 创建和调用步骤&#xff0c;主要按照第二篇操作。 一、建立DLL项目生成库文件 直接建立C的DLL项目&#xff0c;注意叙述&am…

Docker(八)高级网络配置

作者主页&#xff1a; 正函数的个人主页 文章收录专栏&#xff1a; Docker 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01; 高级网络配置 注意&#xff1a;本章属于 Docker 高级配置&#xff0c;如果您是初学者&#xff0c;您可以暂时跳过本章节&#xff0c;直接学习…

飞天使-docker知识点13-查找docker run 启动时候命令与升级docker版本

文章目录 如果很久了&#xff0c;不记得之前docker run 命令然后在升级docker 版本 如果很久了&#xff0c;不记得之前docker run 命令 # 安装runlike安装包 pip install runlike# 运行命令 runlike -p <container_name> # 后面可以是容器名和容器id&#xff0c;-p参数是…

低代码开发:数据处理与可视化

低代码开发是一种快速、高效的应用开发方法&#xff0c;它通过简化和自动化开发过程&#xff0c;使非专业开发人员也能快速构建数据处理和可视化应用。本文将介绍低代码开发的定义、优势&#xff0c;并以数据处理与可视化为例&#xff0c;探讨低代码开发在这一领域的应用和价值…

广东金牌电缆:法大大电子合同助力业务风险管控

广东金牌电缆集团股份有限公司&#xff08;以下简称“广东金牌电缆”&#xff09;成立于2013年&#xff0c;现为广东省电线电缆重点生产企业、广东省守合同重信用单位、国家专精特新小巨人企业、国家高新技术企业&#xff0c;拥有自主商标“夺冠”&#xff0c;“夺冠”商标被评…

Python 中多线程与多处理之间的区别

一、说明 在本文中&#xff0c;我们将学习 Python 中多线程和多处理的内容、原因和方式。在我们深入研究代码之前&#xff0c;让我们了解这些术语的含义。 二、基本术语和概念 程序是一个可执行文件&#xff0c;它由一组执行某些任务的指令组成&#xff0c;通常存储在计算机的…

IntelliJ IDEA 常用快捷键一览表(通用型,提高编写速度,类结构、查找和查看源码,替换与关闭,调整格式)

文章目录 IntelliJ IDEA 常用快捷键一览表1-IDEA的日常快捷键第1组&#xff1a;通用型第2组&#xff1a;提高编写速度&#xff08;上&#xff09;第3组&#xff1a;提高编写速度&#xff08;下&#xff09;第4组&#xff1a;类结构、查找和查看源码第5组&#xff1a;查找、替换…

第二课:BERT

文章目录 第二课&#xff1a;BERT1、学习总结&#xff1a;为什么要学习BERT&#xff1f;预训练模型的发展历程BERT结构BERT 输入BERT EmbeddingBERT 模型构建BERT self-attention 层BERT self-attention 输出层BERT feed-forward 层BERT 最后的Add&NormBERT EncoderBERT 输…

修复uni-simple-router@2.0.7版本query参数null的bug

问题&#xff1a;query参数为null或者为空时&#xff0c;插件内部参数校验问题导致的会报错&#xff1a;TypeError: Cannot convert undefined or null to object at Function.keys 源码修改如下&#xff1a; 通过打补丁的方式修复query参数类型校验问题 1. 安装patch-packag…

Python实现两个列表相加的方法汇总

1. 使用 “” 运算符 通过 “” 运算符将两个列表相加&#xff0c;得到一个新的列表。例如&#xff1a; list1 [1, 2, 3] list2 [4, 5, 6] result list1 list2 print(result) # [1, 2, 3, 4, 5, 6]2. 使用 extend 方法 使用 extend 方法将一个列表中的元素逐个添加到另…

【24.1.19】

24.1.19 本周工作内容下周工作计划 本周工作内容 本周的话主要的一个工作还是第三部分页面部分的完成工作&#xff0c;那就先来汇报一下第三部分的工作进度&#xff0c;第三部分的页面工作呢已经完成啦&#xff0c;就在刚刚提交啦全部的代码&#xff0c;那么这一部分的工作呢也…

使 a === 1 a === 2 a === 3 为 true 的几种“下毒“方法

前言 这算得上是近些年的前端网红题了&#xff0c;曾经对这种网红题非常抵触&#xff0c;认为非常没有意义。 看到了不少人有做分享&#xff0c;有各种各样的方案&#xff0c;有涉及到 JS 非常基础的知识点&#xff0c;也不得不感叹解题者的脑洞之大。 但是&#xff0c;拿来…

传奇服务器搭建

传奇服务器搭建 传奇是一款非常经典的游戏&#xff0c;自从它推出以来就深受玩家们的喜爱。如果你也想要在自己的服务器上搭建一个传奇&#xff0c;那么本文将为你提供一些有用的信息。 首先&#xff0c;我们需要知道什么是传奇服务器。简单来说&#xff0c;它就是一个能够让…

公司OA办公系统使用阿里云服务器怎么选配置?

公司OA、ERP等办公系统如何选择阿里云服务器配置&#xff1f;可以选择第七代企业级独享型云服务器&#xff0c;ECS通用型g7、计算型c7或内存型r7实例&#xff0c;4核CPU8G内存、8核16G、4核16G等配置&#xff0c;活动 https://t.aliyun.com/U/bLynLC 实例规格使用场景vCPU内存…

线程池c++实现

线程池c实现 概述 线程池&#xff08;Thread Pool&#xff09;是一种并发编程的设计模式&#xff0c;它用于管理和重复使用线程&#xff0c;以提高程序的性能和资源利用率。线程池通过维护一组预先创建的线程&#xff0c;这些线程可以在需要时被重复使用&#xff0c;而不是为…