首页 > 其他分享 >SpringBoot部署打包成jar和war有什么不同?

SpringBoot部署打包成jar和war有什么不同?

时间:2023-07-06 22:00:53浏览次数:45  
标签:文件 SpringBoot tomcat JAR jar war 打包

  引言

  你是否发现,在springboot项目中,用mvn install打包成jar形式,然后换一台拥有jdk的机器,就可以直接通过java -jar 项目名.jar 的方式运行,没有任何问题并且不需要tomcat

  打包成war放进tomcat运行,发现端口号变成tomcat默认的8080(我在server.port中设置端口8090)项目名称也必须加上了。

  也就是说在原来的机器的IDEA中运行,项目接口地址为 ip:8090/listall,打包放进另一台机器的tomcat就变成了ip:8080/项目名/listall。这又是为什么呢?

  结论:

  • 通过jar运行实际上是启动了内置的tomcat,所以用的是应用的配置文件中的端口

  • 直接部署到tomcat之后,内置的tomcat就不会启用,所以相关配置就以安装的tomcat为准,与应用的配置文件就没有关系了

  jar包和war包的区别

1、war是一个web模块,其中需要包括WEB-INF,是可以直接运行的WEB模块;jar一般只是包括一些class文件,在声明了Main_class之后是可以用java命令运行的。

2、war包是做好一个web应用后,通常是网站,打成包部署到容器中;jar包通常是开发时要引用通用类,打成包便于存放管理。

3、war是Sun提出的一种Web应用程序格式,也是许多文件的一个压缩包。这个包中的文件按一定目录结构来组织;classes目录下则包含编译好的Servlet类和Jsp或Servlet所依赖的其它类(如JavaBean)可以打包成jar放到WEB-INF下的lib目录下。

  JAR文件格式以流行的ZIP文件格式为基础。与ZIP文件不同的是,JAR 文件不仅用于压缩和发布,而且还用于部署和封装库、组件和插件程序,并可被像编译器和 JVM 这样的工具直接使用。

  这使得我们可以用解压工具来预览里面的内容

【格式特点】:

  • 安全性 可以对 JAR 文件内容加上数字化签名。这样,能够识别签名的工具就可以有选择地为您授予软件安全特权,这是其他文件做不到的,它还可以检测代码是否被篡改过。

  • 减少下载时间 如果一个 applet 捆绑到一个 JAR 文件中,那么浏览器就可以在一个 HTTP 事务中下载这个 applet 的类文件和相关的资源,而不是对每一个文件打开一个新连接。

  • 压缩 JAR 格式允许您压缩文件以提高存储效率。

  • 传输平台扩展 Java 扩展框架(Java Extensions Framework)提供了向 Java 核心平台添加功能的方法,这些扩展是用 JAR 文件打包的(Java 3D 和 JavaMail 就是由 Sun 开发的扩展例子)。

WAR文件就是一个Web应用程序,建立WAR文件,就是把整个Web应用程序(不包括Web应用程序层次结构的根目录)压缩起来,指定一个war扩展名。

【建立的条件】:

  • 需要建立正确的Web应用程序的目录层次结构。

  • 建立WEB-INF子目录,并在该目录下建立classes与lib两个子目录。

  • 将Servlet类文件放到WEB-INF\classes目录下,将Web应用程序所使用Java类库文件(即JAR文件)放到WEB-INF\lib目录下。

  • 将JSP页面或静态HTML页面放到上下文根路径下或其子目录下。

  • 建立META-INF目录,并在该目录下建立context.xml文件。

  打包操作

  jar包形式

  打包成jar形式很简单,你可以通过idea右侧菜单中找到package即可,我们往往先进行clean操作后在进行package,也可以用过输入命令的形式:mvn clean package,这条命令实际上执行了clean 和 package

  war包形式

  打包成war需要一个ServletInitializer类,这个类的位置需要和启动类在同一个文件下,同时我们需要修改pom.xml文件,将<packaging></packaging>中的值修改为war,同时如果我们的SpringBoot是使用html作为前端页面开发没有问题,但是如果我们想用jsp开发,这个时候就需要配置一些依赖了:主要是排除SpringBoot的内置Tomcat,添加javax.servlet-apitomcat-servlet-api(SpringMVC还需要配置后缀),随后的操作如同jar打包一样,输入命令或者package

  如果在创建项目的时候直接选择package为war,直接就能打成war包了

 

标签:文件,SpringBoot,tomcat,JAR,jar,war,打包
From: https://www.cnblogs.com/wegop/p/17533452.html

相关文章

  • Springboot项目热部署
    一.1.先在idea中找到插件JRebel,进行安装。2.在此处输入url和任意一个邮箱地址就用于激活。https://jrebel.qekang.com/{GUID}http://jrebel-license.jiweichengzhu.com/{GUID}前面的是用于激活的地址,{GUID}通过 guidgen.com 获取。3.如果url地址出现以下情况,可通过获取......
  • 基于Jenkins+Gitee实现SpringBoot项目自动化部署(Docker版)
    前言:上一篇笔记:基于Jenkins+Gitee实现SpringBoot项目自动化部署(非Docker版)。本篇笔记介绍一下Docker版本的Jenkins如何实现项目自动化部署。本案例基于Linux CentOS7服务器,防火墙开放8080端口(Jenkins使用),80端口(项目使用),云服务器直接在控制台配置安全规则即可。1......
  • SpringBoot
    SpringBoot概述SpringBoot是搭建spring应用的脚手架,可以迅速的搭建一个spring应用,是一个工具,而非框架。解决问题:复杂的配置混乱的依赖管理特点快速创建独立的Spring应用。提供固定的启动器依赖(启动器即SpringBoot提供的一个jar包)去简化组件配置,通过自己设置参数(.propert......
  • SpringBoot集成kafka收发消息——传递消息为对象
    目前springboot整合后的kafka,因为序列化器是StringSerializer,这个时候如果需要传递对象可以有两种方式方式一:可以自定义序列化器,对象类型众多,这种方式通用性不强。方式二:可以把要传递的对象进行转json字符串,接收消息后再转为对象即可,本项目采用这种方式JSON.toJSONString(user)......
  • springboot的excel导出
    这里导出excel用到的是阿里巴巴的easyexcel1、首先导入依赖<!--alibabaeasyexcel--><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.1.6</version></dependency&g......
  • VMware 虚拟机安装WIN10系统
    一、准备工作   一个安装好的VMware;一个你所需要安装的系统的镜像文件,可以去官网下载。 二、虚拟机安装系统2.1新建虚拟机2.1.1在主页位置点击,创建新的虚拟;或者点击左上角文件,点击新建虚拟机。  2.1.2选择典型安装2.1.3稍后安装操作系统 2.1.4选择你所要安......
  • VMware 安装Linux操作系统
    一、前期准备工作安装激活好的VMware,安装的操作系统(可以官网下载)二、软件安装2.1新建虚拟机2.1.1在主页位置点击,创建新的虚拟;或者点击左上角文件,点击新建虚拟机。   2.1.2选择典型安装2.1.3稍后安装操作系统2.1.4选择你所要安装的操作系统,这里我选择Linux,这边建议......
  • IDEA中SpringBoot项目 注解报错
    WSG报错:应通过@SpringBootApplication指定特性 IDEA中@EnableAutoConfiguration注解报错Attributesshouldbespecifedvia@SpringBootApplication多次用Maven清理重新导包后还是不可以但是项目可以正常启动起来这种是IDEA级别的检查错误 需要在IDEA中Settings中设......
  • git提示“warning: LF will be replaced by CRLF”(转载)
    一、发现问题windows平台下使用gitadd,gitdeploy文件时经常出现“warning:LFwillbereplacedbyCRLF”的提示。网上很多解决办法提到:设置core.autocrlf=false,windows也用LF换行。二、分析问题格式化与多余的空白字符,特别是在跨平台情况下,有时候是一个令人发指的问题。......
  • 第九篇 - SpringBoot统一结果封装Json数据
    前面几节学习了SpringBoot和Vue的结合,以及Vue跳转到另一个Vue页面。这节学习SpringBootcontroller返回Json数据格式封装。参考链接:https://zhuanlan.zhihu.com/p/347233348第一步:在entity文件夹下新建一个ResultVo类。 ResultVo.javapackagecom.example.demo.entity;p......