Spring Boot 项目打包

做Java开发,jar包和war包接触的都比较多。

今天,小编把两者的联系好好梳理下,花5分钟过一遍以后不再迷茫,你值得拥有:

一、概念

1. jar包:jar包是类的归档文件,与平台无关的文件格式,它允许将许多文件组合成一个压缩文件。JAR 文件格式以流行的 ZIP 文件格式为基础。但与 ZIP 文件不同的是,JAR 文件不仅用于压缩和发布,而且还用于部署和封装库、组件和插件程序,并可被像编译器和 JVM 这样的工具直接使用;

简单来说,jar包就是别人已经写好的一些类,然后对这些类进行打包。可以将这些jar包引入到你的项目中,可以直接使用这些jar包中的类和属性,这些jar包一般放在BOOT-INF文件夹的lib目录下。

2. war包:war包是JavaWeb程序打的包,war包里面包括写的代码编译成的class文件,依赖的包,配置文件,所有的网站页面,包括html,jsp等等。一个war包可以理解为是一个web项目,里面是项目的所有东西。

简单来说,war是一个可以直接运行的web模块,通常用于网站,打成包部署到容器中。以Tomcat来讲,将war包放置在其\webapps\目录下,然后启动Tomcat,这个包就会自动解压,就相当于发布了。

二、目录结构

  1. jar包里的com里放的就是class文件,配置文件,但是没有静态资源的文件(index.jsp),大多数 JAR 文件包含一个 META-INF 目录,它用于存储包和扩展的配置数据,如安全性和版本信息;
  2. war包中的文件按照一定目录结构来组织,和项目的文件结构保持一致。其根目录下包含有html和jsp文件,或者包含有这两种文件的目录。(META-INF和jar包作用一样)WEB-INF目录下含有一个web.xml文件和一个classes目录,web.xml是这个应用的配置文件,而classes目录下则包含编译好的servlet类和jsp,或者servlet所依赖的其他类(如JavaBean),通常这些所依赖的类也可以打包成jar包放在WEB-INF下的lib目录下。

三、根本区别

WAR文件代表了一个Web应用程序,把WAR文件作为部署单元来使用,而JAR是类的归档文件。

虽然WAR文件和JAR文件的文件格式是一样的,并且都是使用jar命令来创建,但就其应用来说,WAR文件和JAR文件是有根本区别的。JAR文件的目的是把类和相关的资源封装到压缩的归档文件中,而对于WAR文件来说,一个WAR文件代表了一个Web应用程序,它可以包含 Servlet、HTML页面、Java类、图像文件,以及组成Web应用程序的其他资源,而不仅仅是类的归档文件。

四、使用场景

  1. 产品开发阶段:因为在此发阶段经常需要添加或删除Web应用程序的内容,更新 Servlet类文件,而每一次改动后,重新建立WAR文件将是一件浪费时间的事情,所以不适合使用WAR文件,使用JAR更便利;
  2. 产品发布阶段:因为在这个时候,几乎不需要再做什么改动了,所以使用WAR文件是比较合适的。

五、部署项目

(篇幅原因,打包方法不介绍了,相关博客很多,大家可以自行百度)

  • 部署普通的Spring项目用“war”包就可以,下面展示war包部署在Tomcat中运行方法:
  1. 首先需要在虚拟机安装一个Tomcat;
  2. 将编译器打好的war包复制到Tomcat下的webapps的文件夹内;
  3. 在Tomcat的bin目录下,运行 ./startup.bat ,启动Tomcat,就相当于发布了项目。
  • 部署SpringBoot项目用“jar”包就可以,因为SpringBoot内置tomcat,下面展示jar包部署方法:(我的jar包名称为myjob.jar)
  1. 查看进程:ps -ef | grep myjob.jar;
  2. 杀死进程:kill -9 进程号;
  3. 移除旧的jar包,将新的jar包复制进目录(通常放在/home目录下);
  4. 启动程序:nohup java -jar myjob.jar &;
  5. 实时查看日志:tail -1000f nohup.out。

 

少侠请留步 ... ヾ(◍°∇°◍)ノ゙ ... 
欢迎点赞、评论、加关注,让更多人看到学到赚到
更多精彩,请关注我的"今日头条号":Java云笔记

 

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐