SpringBoot部署打包成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包了

 

posted @   名泽  阅读(80)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?

阅读目录(Content)

此页目录为空

点击右上角即可分享
微信分享提示