springboot运维篇--springboot项目打包

news2024/12/29 10:42:40

1.springboot项目jar方式部署

直接使用idea
在这里插入图片描述
直接使用命令
跳过测试用例快速打包

mvn clean -D skipTests package

将这个应用打成jar包,直接使用java-jar的命令执行

  • 需要注意的是,需要 jar 命令行启动需要依赖 Maven 插件的支持,必须确认在打包的时候 SpringBoot 项目有对应的 Maven 插件:
<!--这个插件,可以将应用打包成一个可执行的jar包-->
 <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                <excludes>
                    <exclude>
                        <groupId>org.projectlombok</groupId>
                        <artifactId>lombok</artifactId>
                    </exclude>
                </excludes>
            </configuration>
            </plugin>
        </plugins>
    </build>

2.jar运行方式临时属性的设置

程序包打好了,可以发布了。但是程序包打好以后,里面的配置都已经是固定的了,比如
配置了服务器的端口是8080。如果8080端口目前正在被占用,我们如何启动springbootl项目
呢?
SpringBoot提供了灵活的配置方式,如果你发现你的项目中有个别属性需要重新配置,
可以使用临时属性的方式快速修改某些配置。方法也特别简单,在启动的时候添加上对应参
数就可以了。

java -jar xxx.jar --server.port=8081 --server.servlet.contextPath=/ssm

总结

  1. 使用jar命令启动SpringBoot工程时可以使用临时属性替换配置文件中的属性
  2. 临时属性添加方式:java -jar 工程名.jar --属性名=值
  3. 多个临时属性之间使用空格分隔
  4. 临时属性必须是当前boot工程支持的属性,否则设置无效

3.springboot项目打包成war包

传统的部署方式:将项目打成war包放入tomcat的webapps目录下面,启动tomcat,
即可访问。

SpringBoot项目改造打包成war的流程

  1. pom.xml配置修改
    <packaging>jar</packaging>
    修改为
    <packaging>war</packaging>
  1. pom文件添加如下依赖
   		 <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <scope>provided</scope>
        </dependency>
  1. 排除springboot内置的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>
  1. 如果是war包发布,需要增加SpringBootServletInitializer-子类,并重写其configure方法,或者将main函数所在的类继承SpringBootServletInitializer,并重写configure方法
    当时打包为war时上传到tomcat服务器中访问项目始终报404错就是忽咯了这个步骤!!!
    改造之前
@SpringBootApplication
public class MyAthApplication  implements WebMvcConfigurer {

    public static void main(String[] args) {
        SpringApplication.run(MyAthApplication.class, args);
    }
    }

改造之后

@SpringBootApplication

public class MyAthApplication  extends SpringBootServletInitializer {

    public static void main(String[] args) {
        SpringApplication.run(MyAthApplication.class, args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        //注意这里指向原先main方法执行的application启动类
      return builder.sources(MyAthApplication.class);
    }
    }

这种改造方式也是官方比较推荐的方法
5. pom文件中不要忘了maven编译插件

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

  1. 在IDEA中使用mvn clean命令清除旧的包,并使用mvn package生成新的war包
    注意事项
将项目打成war包,部署到外部的tomcat中,这个时候,不能直接访问spring boot项目
中配置文件配置的端口。application.yml中配置的server.port配置的是spring boot内置的
tomcat的端口号,打成war包部署在独立的tomcat上之后,配置的server.port是不起作用
的。一定要注意这一点!!

4.jar包和war包方式对比

  1. SpringBoot项目打包时能打成jar与war包,对比两种打包方式:
    jar更加简单方便,使用java-jar xxx.jar就可以启动。所以打成jar包的最多。
    而war包可以部署到tomcat的webapps中,随Tomcat的启动而启动。具体使用哪种方式,
    应视应用场景而定。
  2. 打jar包时不会把src/main/webapp下的内容打到jar包里(你认为的打到jar包里面,路径是不行的会报404)
    打war包,时会把src/main/webapp下的内容打到war包里
  3. 打成什么文件包进行部署与项目业务有关,就像提供rest服务的项目需要打包成jar文
    件,用命令运行很方便。。。而有大量css、js、html,且需要经常改动的项目,打成war包
    去运行比较方便,因为改动静态资源可以直接覆盖,很快看到改动后的效果,这是jar包不能比的。

项目打成jar包运行,一段时间后,前端要对其中某几个页面样式进行改动,使其更美观,那么改动几个css、html后,需要重新打成一个新的jar包,上传服务器并运行,这种改动频繁时很不友好,文件大时上传服务器很耗时,那么w包就能免去这种烦恼,只要覆盖几个css与html即可)

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

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

相关文章

23种设计模式 - 模板方法模式

1. 认识模板方法模式 1.1 模式定义 定义一个操作算法中的框架&#xff0c;而将这些步骤延迟加载到子类中。 它的本质就是固定算法框架。 1.2 解决何种问题 让父类控制子类方法的调用顺序 模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 1.3…

如何实现公网远程访问本地OpenGauss数据库【内网穿透】

文章目录 前言1. Linux 安装 openGauss2. Linux 安装cpolar3. 创建openGauss主节点端口号公网地址4. 远程连接openGauss5. 固定连接TCP公网地址6. 固定地址连接测试 前言 openGauss是一款开源关系型数据库管理系统&#xff0c;采用木兰宽松许可证v2发行。openGauss内核深度融合…

芸鹰蓬飞:抖音投流以后还有自然流量吗?

随着抖音平台的普及&#xff0c;企业和个人纷纷加入到这个短视频的热潮中。然而&#xff0c;一旦投入抖音投流&#xff0c;是否还能依赖自然流量&#xff1f;这是许多用户和品牌关心的问题。本文将深入剖析这一话题&#xff0c;探讨抖音投流与自然流量之间的关系。 一、抖音投…

SpringBoot项目中ModelMapper配置以及使用

这里总结一下ModelMapper的使用方式&#xff0c;供大家参考 前言 项目中对象与对象赋值转换使用的频率非常的高&#xff0c;比如数据库表实体对象(Entity)与业务类对象(Model)之间的赋值传递&#xff0c;或者模型对象&#xff08;Model&#xff09;与视图对象&#xff08;View…

报错:Parsing error: No Babel config file detected...的解决方案

报错&#xff1a;Parsing error: No Babel config file detected for E:\前端学习资料\9.vue基础\class\day03\02-源代码\01-component\vue.config.js. Either disable config file checking with requireConfigFile: false, or configure Babel so that it can find the confi…

EasyPOI实现excel文件导出

EasyPOI真的是一款非常好用的文件导出工具&#xff0c;相较于传统的一行一列的数据导出&#xff0c;这种以实体类绑定生成的方式真的非常方便&#xff0c;也希望大家能够了解、掌握其使用方法&#xff0c;下面就用一个实例来简单介绍一下EasyPOI的使用。 1.导入依赖 <!-- e…

Autosar模块介绍:Memory_3(MemIf-内存接口抽象)

上一篇 | 返回主目录 | 下一篇 Autosar模块介绍&#xff1a;Memory_3(MemIf-内存接口抽象 1 基本术语解释2 MemIf组成结构图 1 基本术语解释 编号缩写原文解释1(Logical) Block——可单独寻址的连续内存区域&#xff08;即&#xff0c;用于读、写、擦除、比较等操作&#xff…

深度学习 python opencv 实现人脸年龄性别识别 计算机竞赛

文章目录 0 前言1 项目课题介绍2 关键技术2.1 卷积神经网络2.2 卷积层2.3 池化层2.4 激活函数&#xff1a;2.5 全连接层 3 使用tensorflow中keras模块实现卷积神经网络4 Keras介绍4.1 Keras深度学习模型4.2 Keras中重要的预定义对象4.3 Keras的网络层构造 5 数据集处理训练5.1 …

如何用python生成动态随机验证码图片

相信大部分小伙伴在登录注册页面都看到过这样的验证码图片&#xff1a; 今天就带大家用实现一波这种验证码图片的生成&#xff0c;这在Django开发中可以拿来即用~ 1. 首先导入必要的库&#xff1a; import random from PIL import Image, ImageDraw, ImageFont, ImageFilter…

Vatee万腾科技决策力的引领创新:Vatee数字化视野的崭新天地

在数字时代的激烈竞争中&#xff0c;Vatee万腾以其科技决策力的引领&#xff0c;开创了数字化视野的崭新天地。这并不仅仅是一场技术的飞跃&#xff0c;更是一次对未来的深刻洞察和引领创新的勇敢实践。 Vatee万腾的科技决策力不仅仅停留在数据分析和算法的运用&#xff0c;更是…

reticulate | R-python调用 | 安装及配置 | conda文件配置

reticulate | R-python安装及配置 | conda文件配置 1. 基础知识2. 安装reticulate from CRAN3. 包含了用于Python和R之间协同操作的全套工具&#xff0c;在R和Rstudio中均可使用4. 配置python环境4.1 4种环境配置方式4.2 miniconda 环境install_miniconda()报错一install_minic…

设计模式之原型模式(Prototype)

原型模式 如果已经有一个对象了&#xff0c;你想创建一个对象&#xff0c;而且对象里面的属性和已经存在的对象的属性差不多&#xff0c;就可以使用clone方法 克隆一个出来 实现原型模式需要实现标记型接口Cloneable -->标记型接口 : 里面没有需要实现的方法(空接口) 一般…

双十一钜惠!三门不可多得的HarmonyOS学习教程

今年双十一&#xff0c;各大商城优惠不断。这里介绍三门不可多得的HarmonyOS学习教程&#xff0c;都有非常大的折扣优惠。 《鸿蒙HarmonyOS手机应用开发实战》 《鸿蒙HarmonyOS手机应用开发实战》是由清华大学出版社出版的。 目前当当是“7.56折”&#xff1a;http://produc…

照片放大软件 Topaz Gigapixel AI mac中文版简介

Topaz Gigapixel AI mac是一款使用人工智能功能扩展图像的桌面应用程序&#xff0c;同时添加自然细节以获得惊人的效果。使用深度学习技术&#xff0c;A.I.Gigapixel™可以放大图像并填写其他调整大小的产品遗漏的细节&#xff0c;使用A.I.Gigapixel™&#xff0c;您可以裁剪照…

Vatee万腾外汇数字化策略:Vatee科技决策力的未来引领

在外汇市场&#xff0c;Vatee万腾通过其前瞻性的外汇数字化策略&#xff0c;正引领着科技决策的未来。这一数字化策略的崭新愿景为投资者提供了更智慧、更高效的外汇投资体验&#xff0c;成为科技决策领域的翘楚。 Vatee万腾的外汇数字化策略是科技决策力未来引领的典范。通过运…

14.求n!和1!+2!+...+20!和2^1+2^2+……++2^20和2^1+2^3+……++2^19

文章目录 前言一、题目描述 二、题目分析 三、解题 程序运行代码 四、举一反三一、题目描述&#xff1a;求1&#xff01;2&#xff01;...20! 二、题目分析 三、解题 程序运行代码1程序运行代码2 一、题目描述&#xff1a;求求2^1^2^2^……2^20^二、解题 程序运行代码 一、题目…

将ChatGPT集成在AR中,Snap玩出了新花样!

著名社交媒体平台Snap在官网宣布&#xff0c;在最新的AR开发平台Lens Studio 5.0版本中&#xff0c;集成ChatGPT功能。 在ChatGPT的帮助下&#xff0c;开发人员可以创建更多有趣、科普、对话、创意的Snapchat镜头&#xff0c;例如&#xff0c;通过ChatGPT创建无限测验和随机生…

燃气管网监测系统|全面保障燃气安全

根据新华日报的报道&#xff0c;2023年上半年&#xff0c;我国共发生了294起燃气事故&#xff0c;造成了57人死亡和190人受伤&#xff0c;燃气事故的发生原因有很多&#xff0c;其中涉及到燃气泄漏、设备故障等因素。因此&#xff0c;加强燃气安全管理&#xff0c;提高城市的安…

祝贺莱佛士学生获得SDC国际设计大赛新加坡赛区冠军

染色师和调色师协会国际设计大赛&#xff08;SDC International Design Competition&#xff0c;简称SDC国际设计大赛&#xff09;由英国染色家协会&#xff08;Society of Dyers and Colourists&#xff0c;简称SDC&#xff09;举办。 SDC成立于1884年&#xff0c;是国际上最…

基于 PostgreSQL 构建 AI 电商产品图片相似度搜索方案

在这篇文章中&#xff0c;将介绍如何基于向量数据库&#xff0c;构建一个电商产品图片目录的向量相似度查询解决方案。我们将通过 Amazon SageMaker、pgvector 向量数据库扩展插件、小型语言模型助力 AI 图片搜索能力&#xff0c;从而在产品目录中查找到最符合条件的产品&#…