参考:

  • https://www.jianshu.com/p/3b5c45e8e5bd
  • https://www.cnblogs.com/banml/p/11767305.html
  • https://blog.csdn.net/cjw12581/article/details/107463971

文章目录

  • 1. jar 包
    • jar 与 zip 异同
    • jar 包主要用途
  • 2. war 包
    • war 包部署优势
    • 开发阶段不适合使用 war 的原因
    • 部署 war 包到 tomcat
  • 3. jar 包 vs. war 包
    • SpringBoot 打包方式区别
      • SpringBoot 适宜打成 war 包的场景

1. jar 包

JAR(Java Archive),是与平台无关的文件格式。它允许将多个文件组合成要给压缩文件。

  • 其实可以对比一下:jarrar ,j 可以理解成 java。

jar 包其实就是 java 项目压缩包,是通过 java 程序压缩产生的压缩包。jar 包是通过 JavaSE 程序打成的包。

jar 与 zip 异同

jar 文件格式以流行的 zip 文件格式为基础。

  • 同:jarzip 用于压缩和发布
  • 异:jar 还用于
    • 部署
    • 封装库、组件、插件程序
    • 可被编译器、jvm 等工具直接使用

另外 jar 包还含有特殊的文件,如 manifest 和部署描述符,用来指示工具如何处理特定的 jar。

jar 包目录结构如下:

根目录||---- 该包的 java 类文件目录||---- META-INF 目录          // 存放该包和扩展的配置数据

jar 包主要用途

在 jar 包中包含已经写好的一些类,这些类打包到一起便于存放管理。将 jar 包引入到自己的项目中,就可以直接使用这些 jar 包中的类和属性(从前这些 jar 包都会被扔到 lib/ 目录下)。

2. war 包

war 包就是 web 项目压缩包。war 是一个可以直接运行的 web 模块,一个 war 包可以理解成就是一个 web 项目,通常用于网站,打成包部署到容器(如 tomcat)中。以 Tomcat 为例,war 包放置在其\webapps\ 目录下,然后启动 Tomcat,这个包就会自动解压,就相当于发布了。

war 包是 Sun 公司提出的一种 web 应用程序格式,与 jar 类似,也是很多文件的压缩包。

war 包是 JavaWeb 程序打的包。,包含了项目的所有东西,包括:

  • 代码编译成的 class 文件
  • 依赖包
  • 配置文件
  • 网站页面(html、jsp、servlet、图片文件等)

war 包中文件按照一定目录结构来组织。

根目录||---- .html、.jsp (或包含这两种文件的目录)||---- WEB-INF 目录           // 存放 .class 文件和配置文件|        ||        |---- web.xml       // 该应用的配置文件|        ||        |---- classes 目录|        |         ||        |         |---- 编译好的 servlet 类和 js|        |         ||        |         |---- servlet 所依赖的其他类(如 JavaBean)|        |----- lib          // 存放该包的依赖 jar 包||---- META-INF 目录          // 存放该包和扩展的配置数据

其中,servlet 所依赖的类也可以打包成 jar 包放在 WEB-INF 下的lib目录下。

war 包部署优势

一个 Web 应用程序的目录和文件可能会非常多,将这个 Web 应用程序部署到另一台机器上,会不太方便,因此,可以将这个 Web 应用程序打包成 Web 归档文件(war),过程和把 java 类文件打包成 jar 相似。

利用 war 文件,可以把 servlet 类文件和相关的资源集中在一起进行发布。

  • 这样一来,Web 应用程序不再是按照目录层次结构来进行部署,而是把 war 文件作为部署单元来使用。

开发阶段不适合使用 war 的原因

开发阶段经常需要添加或删除 web 应用程序的内容、更新 Servlet 类文件,而每一次改动后,重新建立 war 包将很浪费时间。

在开发阶段,我们通常将Servlet源文件放到Web应用程序目录的 src 子目录下,以便和Web资源文件区分。在建立 war 文件时,只需要将 src 目录从 Web 应用程序目录中移走,就可以打包了。

在产品发布阶段,使用 war 包比较合适,因为这个时候,几乎不需要再做什么改动了。

部署 war 包到 tomcat

  1. 开发人员打 war 包给测试,现在测试拿到一个 war 包:test.war

  2. 打开 tomcat 的安装路径 ,假设是D:\Tomcat\apache-tomcat-7.0.68,然后进入到 webapps 文件夹中,把 test.war 放到 webapps 文件夹。

  3. 启动Tomcat。

    如果不需要更改配置文件:到这一步就可以了。

    在浏览器输入

    http://localhost:tomcat_port/test
    

    即可打开 test 项目的 index.jsp 页面( tomcat_port 是自己的端口号)。如果 test 项目没有 index.jsp 页面,那就需要打开其他相应的页面。

    如果需要更改配置文件:

  4. 关闭 tomcat。

  5. 删除 test.war文件(因为 tomcat 启动后会自动解压 test.war,如果在 tomcat 启动的状态下去删除 war 包,解压好的文件夹也会被一并删除,所以需要停止 tomcat, 然后删掉 war 包,之后再启动。项目文件夹就不会被认为是 war 解压而来的)。

  6. 由于刚刚启动过 tomcat,tomcat会自动解压缩 test.war 为 test 文件夹。所以我们在 webapps 下面可以看到 test 文件夹。打开 test 文件夹更改配置文件即可。

  7. 更新完配置之后,启动 tomcat。

  8. 浏览器打开即可。

3. jar 包 vs. war 包

jar 包 war 包
定位 类的归档文件 web 应用程序/ Web 归档文件
查看内容方式 WinRaR 可以直接打开 需要先把后缀名改为.rar,再用 WinRaR 打开;
或者保留后缀名不变,手动选择打开方式时,手动选出 WinRaR.exe(推荐打开方式中不能自动识别 WinRaR)
内容 java类、配置文件 Servlet、html页面、java类、图像文件以及组成 web 应用程序的其他资源
目录结构 META-INF目录:存放包和扩展的配置数据,如:安全性、版本信息 WEB-INF目录:存放 .class 文件和配置文件;
META-INF目录:存放包和扩展的配置数据,如:安全性、版本信息
应用 部署、
封装库、组件和插件程序
部署/发布
部署项目区别 SpringBoot项目
(因为SpringBoot 内置了 tomcat)
Spring项目

SpringBoot 打包方式区别

其实 SpringBoot 项目既可以打成 jar 包,也可以打成 war 包发布。

打成 jar 包 打成 war 包
运行 直接通过内置 tomcat 运行 需要安装 tomcat(可以灵活选择 tomcat 版本),然后将 war 包放到 tomcat 的 webapps/ 目录下
tomcat 配置变更 在 SpringBoot 的配置文件中设置 直接对 tomcat 配置修改
日志 内置 tomcat 没有日志输出,得靠 jar 包应用输出日志 tomcat 有自己的日志输出

SpringBoot 适宜打成 war 包的场景

SpringBoot 打成的 jar 包自带 tomcat 容器,适用于单个项目。

但若要把多个项目部署到同一个 tomcat 容器上,则需要分别打成 war 包。再将多个 war 包部署到同一个 tomcat 容器上,以达到节省资源目的。

jar 包与 war 包区别相关推荐

  1. java jar包和war包_java中jar包和war包之间有什么区别

    原标题:java中jar包和war包之间有什么区别 jar包 简单地说,JAR(Java Archive)是一种包文件格式.JAR文件具有.jar扩展名,可以包含库.资源和元数据文件. 本质上,它是一 ...

  2. 花5分钟过一遍jar包和war包的区别,以后都不会再迷茫

    做Java开发,jar包和war包接触的都比较多. 今天,小编把两者的联系好好梳理下,花5分钟过一遍以后不再迷茫,你值得拥有: 一.概念 1. jar包:jar包是类的归档文件,与平台无关的文件格式, ...

  3. jar包和war包区别及理解

    在开发阶段不适合使用war包,因为在开发阶段,经常需要添加或删除Web应用程序的内容,更新 Servlet类文件,而每一次改动后,重新建立war包将是一件浪费时间的事情.在产品发布阶段,使用war文件 ...

  4. 【运维面试】面试官: jar包和war包有什么区别?

    前言 做java开发的jar包和war包接触的比较多,做运维的也会接触到,运维的这个问题一般是问: 开发人员给你的包是jar包还是war包. 因为培训机构的小伙伴没有接触过java,所以分不清jar和 ...

  5. springboot打包为jar包和war包的区别

    为什么springboot更支持打包为jar包 springboot打包为jar包和war包的区别 在springboot项目中使用的是springboot内嵌的tomcat容器,而war包是运行在外 ...

  6. IDEA中打jar包和war包以及jar包和war包的区别及理解

    首先我们先理解一下什么是jar包和war包! jar包:jar是类的归档文件! JAR(Java Archive,Java 归档文件)是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件,为 J ...

  7. jar包与war包部署的区别及jar包部署的一个路径访问问题

    1.jar包与war包部署的区别 什么是jar包? jar包是类的归档文件,jar文件格式以流行的ZIP文件格式作为基础,和ZIP文件不一样的是,JAR文件不仅仅用来进行压缩和发布,还用来部署和封装库 ...

  8. java ear包_简单介绍Java 的JAR包、EAR包、WAR包区别

    原标题:简单介绍Java 的JAR包.EAR包.WAR包区别 WAR包 WAR(Web Archive file)网络应用程序文件,是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件.War专 ...

  9. jar包、war包和ear包的介绍与区别

    个人理解: 在学习maven的过程中接触到了jar包和war包.之前在写小项目的时候真的遇到过war包,当时为了找到jar包,把war包的后缀名改成了.rar的压缩文件,在里面提取出来jar包来用.其 ...

最新文章

  1. hdu 5909 Tree Cutting——点分治(树形DP转为序列DP)
  2. GridView编辑删除操作
  3. 案例册下载 | 10+ 行业标杆企业实践集锦,为你开启数据驱动之旅
  4. 【☀️~爆肝万字总结递归~❤️玩转算法系列之我如何才能掌握递归解题的能力❤️~十大经典问题助你突破极限~建议收藏☀️】
  5. mysql k,mysql事务有关概念-怀念K.Dures
  6. Udemy - Build Apps with React Native
  7. mybatis基础学习3---特殊sql语句(备忘)
  8. curl在android服务器上编译,Android curl的上载编译和使用
  9. android申请多个运行时权限,Android 6.0(API 23) 运行时权限(二)之权限申请
  10. 1.C和C++区别,以及const分析(底层const/顶层const)
  11. 母子关系:DAE是COLLADA的模型文件(转载)
  12. Mysql查询按照某字段指定顺序排序
  13. 5.卷1(套接字联网API)---TCP客户/服务器程序示例
  14. Android 广告图片 全屏图片适配方案的思路
  15. Cadence OrCAD Capture 自底而上的设计流程
  16. 智汇云校携手院校组织数千学生参加“2020华为中国大学生ICT大赛”
  17. 磁盘阵列RAID技术详解
  18. 【思维】Hzy's Rabbit Stick
  19. 多线程使用场景(经典必看)
  20. Flask SQLAlchemy 操作数据库已有数据表

热门文章

  1. 论文阅读:Noise-Resilient Training Method for Face Landmark Generation From Speech
  2. 【移动开发者沙龙 北京站】第二期 报名火热来袭
  3. 计算机网路之入门篇笔记
  4. 访问者模式(visitor)模式
  5. mvc后台传到前台的值带html标签css(解决方法)
  6. java中穷举法排序_java穷举法小案例
  7. Java 库文件的添加教程
  8. 如何搭建一个完整的交易框架
  9. 更新 WinPython Spyder
  10. Windows下多线程编程 C/C++ —— 矩阵乘法的并行算法