SpringBoot项目war包部署步骤及启动异常处理

概述

SpringBoot项目普遍使用jar包安装部署,这样是最方便也是推荐的方式,网上也是很多这样的教程。可对于传统war方式部署资料也是参差不齐,今天带小伙伴一起来看看war包部署的步骤。

一、jar包和war包

先来说说传统jar和war的几点区别(了解)
  • war是一个web模块,其中需要包括WEB-INF,是可以直接运行的WEB模块;jar一般只是包括一些class文件,在声明了Main_class之后是可以用java命令运行的。

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

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

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

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

SpringBoot可执行jar包

SpringBoot只要引入了web-starter后依赖引入了一个内嵌的tomcat包,发布运行程序时其实运行的是程序中的tomcat,因此不需要传统tomcat将程序添加到webapps目录中运行。

但是对于一些实施或者运维人员习惯了传统tomcat的方式部署程序,并且线上的项目经常性的修改页面(html)或者xml(sql)文件。如果是打成war包部署,运行tomcat会对war包自动解压,修改页面、xml、配置文件等直接修改文件就可以了。对于说打成jar包的程序,修改起来就麻烦了很多,总不能修改一个文件就重新上传jar包吧(当然jar包可能通过手动解压 -> 修改文件 -> 手动再打jar包)。所以打成war包的场景还是不少的。

二、打war包步骤

1. 修改pom.xml 将打包方式修改为war
<packaging>war</packaging>
2. 为开发时方便,需要手动添加内嵌tomcat(作用域为编译、测试期使用),并排除掉web-start中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>
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-tomcat</artifactId>
	<scope>provided</scope>
</dependency>
3. 引导类(主类)继承ServletInitializer重写configure方法
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

@SpringBootApplication
public class SipApplication extends SpringBootServletInitializer {

  public static void main(String[] args) {
    SpringApplication.run(SipApplication.class, args);
  }
  @Override
  protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
      return builder.sources(SipApplication.class);
  }
}
4. 修改打成war文件名称及运行waven打包命令生成war包

修改pom.xml中finalName为打成war包文件名称

<build>
	<finalName>HRP-SIP</finalName>
	......

项目路径下执行maven打包命令

mvn clean package

打包成功后刷新项目target目录查看打war文件

在这里插入图片描述

5. 将war包丢到tomcat webapps目录并运行tomcat

如果运行成功恭喜,可是我没有运行成功。

出现类似如下报错
在这里插入图片描述

说明:我使用SpringBoot新版本2.4.3;本地tomcat版本8.0.9
再查看SpringBoot中内嵌的tomcat版本为9.0.43
在这里插入图片描述
应该是tomcat8.x不支持新版本的SpringBoot导致的错误,官网重新下载tomcat9.0.43(最新版tomcat)后继续运行war。
在这里插入图片描述
完成

再补充一个知识点如果tomcat启动时控制台存在乱码,修改apache-tomcat-9.0.43\conf\logging.properties文件如下属性为GBK即可。

在这里插入图片描述

总结

以上就是SpringBoot打成war包的全部,关于程序到底是jar还是war不可厚非,作为程序员都是基本技能。对比来说打成jar包,不管开发程序中和还是部署程序来说都更容易些,所以出错也会少些。

(用心写好每一行程序和文字:完~)

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Spring Boot中启动WAR,你需要进行以下步骤: 1. 确保你的项目已经配置为使用WAR部署。在你的项目的pom.xml文件中,将packaging属性设置为"war": ```xml <packaging>war</packaging> ``` 2. 在你的Spring Boot应用程序的主类上添加`extends SpringBootServletInitializer`,并覆盖`configure`方法。这是为了支持WAR部署: ```java import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; public class YourApplication extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(YourApplication.class); } public static void main(String[] args) { SpringApplication.run(YourApplication.class, args); } } ``` 3. 在你的项目的构建文件(如pom.xml)中,添加Servlet容器的依赖。例如,如果你使用的是Tomcat,则添加以下依赖: ```xml <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> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> <scope>provided</scope> </dependency> ``` 4. 构建WAR。运行以下命令将你的Spring Boot应用程序打WAR文件: ``` mvn clean package ``` 5. 将生成的WAR部署到Servlet容器中,例如Tomcat。将WAR文件复制到Tomcat的webapps目录下,并启动Tomcat服务器。 现在,你的Spring Boot应用程序将作为WAR在Servlet容器中运行。您可以通过访问相应的URL来访问应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值