打包jar包或war包

news2024/11/8 17:05:13

idea下springboot打包成jar包和war包,并且在外部tomcat下运行访问

jar包

这里设置pom.xml文件将工程打成jar包

在这里插入图片描述

使用maven的插件打包,打包后的jar包在项目的target目录下

在这里插入图片描述
在这里插入图片描述

此时打包出来是有默认的名称的jar包。然后在命令行下 运行起这个jar包。当然,jar包名字你需要去上面target路径下去拷贝一下。【是不是很麻烦!!下面打war包可以自定义名称】

在这里插入图片描述

这样springboot项目就运行起来了,但是可能会有一些页面访问不了,进入到jar包中查看一下,会发现jar包中没有把webapp下的页面文件等打包进去,当然访问找不到页面了

在这里插入图片描述

war包

把pom.xml中的jar改成war

在这里插入图片描述

如果嫌弃上面需要去拷贝jar包名字麻烦,想打包出来的名字是自定义的,在build下 规定即可

在这里插入图片描述

打包成war包,同样,打包后的war包还是在项目的target目录下

在这里插入图片描述

这样打包出来的war包名字就是自定义的

在这里插入图片描述

运行war包

在这里插入图片描述
现在页面可以正常访问。

在tomcat运行项目

如果要在外部tomcat运行,还需要更改一些配置之后再进行打包
下面以war包为例

首先要排除springboot项目内置的Tomcat容器(两种方式都可)

方法一:

Exclusions:当一个项目A依赖项目B,而项目B同时依赖项目C,如果项目A中因为各种原因不想引用项目C,在配置项目B的依赖时,可以排除对C的依赖。

<!--排除spring-boot-starter-web中的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>

方法二:

maven中三种classpath
编译,测试,运行
1.compile:默认范围,编译测试运行都有效
2.provided:在编译和测试时有效
3.runtime:在测试和运行时有效
4.test:只在测试时有效
5.system:在编译和测试时有效,与本机系统关联,可移植性差

<!--在pom.xml中添加依赖-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <!--打包的时候可以不用包进去,别的设施会提供。事实上该依赖理论上可以参与编译,测试,运行等周期。
        相当于compile,但是打包阶段做了exclude操作-->
    <scope>provided</scope>
</dependency>

修改启动类,重写初始化方法
为什么要重写初始化方法,如果您正在构建WAR文件并部署它,则需要WebApplicationInitializer

启动类代码:

@SpringBootApplication
public class Application {

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

}

修改方式

//方式一,启动类继承SpringBootServletInitializer实现configure:

@SpringBootApplication
public class Application extends SpringBootServletInitializer {

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

@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
    return builder.sources(Application.class);
}

}

//方式二,新增加一个类继承SpringBootServletInitializer实现configure:
public class ServletInitializer extends SpringBootServletInitializer {

@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
    //此处的Application.class为带有@SpringBootApplication注解的启动类
    return builder.sources(Application.class);
}

}

接着像上面一样打包,然后直接复制打包好的war包到外部tomcat的webapps目录中
在这里插入图片描述

启动一下tomcat
在这里插入图片描述

在浏览器中访问路径需要加上你的项目名字,才能成功访问。也就是这个文件夹的名字
在这里插入图片描述

注意事项:

使用外部Tomcat部署访问的时候,application.properties(或者application.yml)中配置的
server.port=
server.servlet.context-path=
将失效,请使用tomcat的端口,tomcat,webapps下项目名进行访问

同时确保pom中有以下代码

org.apache.maven.plugins maven-war-plugin 3.0.0 false ${artifactId}

部署tomcat后部分资源不存在
部署到tomcat上后,由于我们的访问路径可能发生变化,例如IDEA是用localhost:8080访问的首页,但是部署后可能首页是localhost:8080/Mynote。
同理,可能出现资源显示不出来,例如我的图片在数据库中的存储路径如下:
在这里插入图片描述

那么我就必须改为:
在这里插入图片描述

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

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

相关文章

chatgpt赋能python:Python中如何在输出一排后换行输出

Python中如何在输出一排后换行输出 在Python编程中&#xff0c;经常需要使用print语句输出信息。有时候需要在输出一排信息之后换行输出&#xff0c;比如在输出一个数据表格或者一个列表等等情况下&#xff0c;这就需要用到Python中如何在输出一排后换行输出的方法。 什么是换…

Python基础之类的继承与派生

一、继承 新创建一个类&#xff0c;这个类可以继承一个或多个父类&#xff0c;新创建的类及哦啊做子类或派生类&#xff0c;被继承的类叫做父类或基类。 例&#xff1a; class ParentClass_01: # 定义父类passclass ParentClass_02: # 定义父类passclass SonClass_01(Pa…

RTKLIB学习总结(九)RTK算法详解

文章目录 一、RTK算法数据类型1、rtk_t&#xff1a;rtk控制结构体2、sol_t&#xff1a;结果结构体3、SOLQ_XXX&#xff1a;解的类型状态4、ambc_t&#xff1a;模糊度固定控制结构体5、ssat_t&#xff1a;卫星状态控制结构体6、prcopt_t&#xff1a;算法处理选项结构体7、obs_t&…

【ChatGPT工具篇-1】ChatGPT + MindShow 分分钟搞定PPT制作

AI 能生万物吗&#xff1f; &#xfeff;&#xfeff;&#xfeff; 制作一份“通用性”的PPT需要几步&#xff1f; 三步 借助ChatGPT和MindShow&#xff0c;分分钟完成操作&#xff0c;就能制作出来完胜大部分人的PPT文件&#xff1b; 解锁更多AIGC&#xff08;ChatGPT、AI绘…

C#,码海拾贝(42)——病态线性方程组的“简单迭代解法”之C#源代码

using System; namespace Zhou.CSharp.Algorithm { /// <summary> /// 求解线性方程组的类 LEquations /// 原作 周长发 /// 改编 深度混淆 /// </summary> public static partial class LEquations { /// <summary> /…

chatgpt赋能python:Python如何定义π

Python如何定义π 介绍 Python是一种高级编程语言&#xff0c;它被广泛用于数据分析、机器学习、科学计算和Web开发等领域。在这些领域中&#xff0c;算数计算是非常重要的&#xff0c;而数学领域中重要的一个数字就是π。 π是圆的周长与直径的比例。它是一个无限不循环的小…

springboot+vue房屋租赁租房管理系统94sk3

本租房管理系统有管理员&#xff0c;租客&#xff0c;屋主三个角色。管理员功能有个人中心&#xff0c;租客管理&#xff0c;屋主管理&#xff0c;房源信息管理&#xff0c;订单信息管理&#xff0c;屋主申诉管理&#xff0c;通知公告管理&#xff0c;留言板管理&#xff0c;系…

chatgpt赋能python:Python多行注释

Python 多行注释 在 Python 中&#xff0c;我们经常需要写注释来解释代码或者用于调试。Python 的注释分为单行注释和多行注释&#xff0c;本文主要介绍 Python 中如何多行注释。 单行注释 在 Python 中&#xff0c;单行注释以符号 # 开头&#xff0c;可以写在代码的任何位置…

魔法打败魔法?OpenAI用GPT-4 来解释 GPT-2 的行为

大语言模型&#xff08;LLM&#xff09;像大脑一样&#xff0c;它们是由 “神经元” 组成的&#xff0c;它们观察文本中的一些特定模式&#xff0c;以影响整个模型接下来 “说” 什么。但由于 LLM 中的参数数量多到已经无法由人类解释的程度&#xff0c;因此&#xff0c;LLM 给…

MixQuery系列(一):多数据源混合查询引擎调研

背景 存储情况 当前的存储引擎可谓百花齐放,层出不穷。为什么会这样了?因为不存在One for all的存储,不同的存储总有不同的存储的优劣和适用场景。因此,在实际的业务场景中,不同特点的数据会存储到不同的存储引擎里。 业务挑战 然而异构的存储和数据源,却给分析查询带…

如何兼顾性能+实时性处理缓冲数据?

我们经常会遇到这样的数据处理应用场景&#xff1a;我们利用一个组件实时收集外部交付给它的数据&#xff0c;并由它转发给一个外部处理程序进行处理。考虑到性能&#xff0c;它会将数据存储在本地缓冲区&#xff0c;等累积到指定的数量后打包发送&#xff1b;考虑到实时性&…

Golang每日一练(leetDay0094) H 指数 I\II H Index

目录 274. H 指数 H Index &#x1f31f;&#x1f31f; 275. H 指数 II H Index ii &#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Rust每日一练 专栏 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 27…

sqlserver数据库学习感悟(1)----关于group by

以下含编写过程&#xff0c;如果嫌啰嗦&#xff0c;最后有总结哒&#xff01; 例题&#xff1a;有heat表和eatables两张表&#xff0c;分别为&#xff1a; eatables heat&#xff1a;protein&#xff08;蛋白质&#xff09;&#xff0c;fat&#xff08;脂肪&#xff09;&…

架构演变过程

单体架构 分布式架构&#xff1a;业务拆分 微服务 分布式架构的一种。独立开发和部署&#xff0c;一个业务多个服务支持 特点&#xff1a; 单一职责&#xff1a;拆分粒度更小&#xff0c;一个服务一个业务&#xff0c;避免重复开发&#xff08;面向对象角度来说符合最少知道原…

软考A计划-系统架构师-学习笔记-第五弹

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff…

Swift——如何将某一进制的数字按另一种进制输出(比如十进制输出打印成十六进制,八进制打印输出成二进制)

最近由于需要阅读比较老的文档&#xff0c;老文档里内存地址是用八进制而不是十六进制&#xff0c;所以需要写一个小工具&#xff0c;用来转换进制进制。虽然自带的计算器可以&#xff0c;但是数量一多比较麻烦。 一开始我想费劲吧啦写十二个转换函数&#xff0c;虽然有些函数可…

chatgpt赋能python:Python字符串:如何定义一个空字符串

Python字符串&#xff1a;如何定义一个空字符串 在Python中&#xff0c;字符串是一种常见的数据类型&#xff0c;通常用于存储文本信息。定义一个空字符串在Python中非常简单&#xff0c;本文将介绍如何定义一个空字符串以及在Python中使用字符串的一些常见操作。 定义一个空…

基于Java+SpringBoot+Vue前后端分离摄影分享网站平台系统

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

python课程设计:实现一个飞行训练成绩管理微信息系统,对飞行员的某门飞行课目成绩进行质量评定

一、编程题目 在日常飞行训练中,飞行训练成绩是 飞行员进行综合等级评定的重要依据。 假设飞行训练团在某次飞行训练结束后,要对飞行员的某门飞行课目成绩进行质量评定。 请编程实现一个飞行训练成绩管理系统。要求完成以下功能: 1录入成绩 2计算平均分 3计算最高分 4查…

零入门kubernetes网络实战-35->vxlan简介以及原理介绍(vxlan报文结构介绍)

《零入门kubernetes网络实战》视频专栏地址 https://www.ixigua.com/7193641905282875942 本篇文章视频地址(稍后上传) 本篇文章开始介绍vxlan虚拟设备。 主要介绍vxlan的协议报文结构&#xff0c; 1、总结 主要涉及到以下方面&#xff1a; overlay跟vxlan的关系如何理解v…