Java(一百五十三)SpringBoot项目快速打包成war项目与部署

258 阅读3分钟

上文中,我记录了SpringBoot项目打包成jar包,并且部署在linux服务器上,并与nginx联通的全过程。

 

SpringBoot打包成jar包是自带tomcat服务器的,因此不需要服务器上再安装tomcat服务器。

 

今天我们要学习的war包和jar包的区别之一就是war包没有集成tomcat服务器,因此其体积会相对jar包小一些。

 

因此部署war包项目是需要在linux服务器中安装tomcat服务器的。Tomcat安装请参照《Java(一百五十一)centos配置tomcat》

 

安装成功之后,我们可以使用这一个tomcat服务器管理多个项目。

 

一:打包war包

SpringBoot默认是打包成jar包,现在我们需要将其打包成war包就需要做一些配置。

 

1:将项目打包形式显示的声明为war包的形式

在pom.xml中添加配置:

<!-- 1:将项目打包形式显示的声明为war包的形式   -->
 <packaging>war</packaging>

添加位置如下图所示:

1.jpg

 

2:声明使用外部提供tomcat依赖(默认就不再使用内部再带的tomcat)

在pom.xml中的dependencies标签下添加配置:

<!-- 2:声明使用外部提供tomcat依赖(默认就不再使用内部再带的tomcat)-->
 <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-tomcat</artifactId>
     <!--将服务器声明为外部已提供 -->
     <scope>provided</scope>
 </dependency>

添加位置如下图所示:

2.jpg

 

3:提供SpringBoot项目启动器(初始化项目内部Servlet组件)

在项目入口文件中添加配置(你项目的入口文件在哪你可别问我)

package com.example.demo;
 
 import org.mybatis.spring.annotation.MapperScan;
 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;
 
 //3:提供SpringBoot项目启动器(初始化项目内部Servlet组件)
 @SpringBootApplication
 // 添加这个注解扫描dao文件
 @MapperScan(basePackages = "com.example.demo.demos.web.dao")
 public class DemoApplication extends SpringBootServletInitializer {
     public static void main(String[] args) {
         SpringApplication.run(DemoApplication.class, args);
     }
 }

 

4:重写一个父类中的方法configure(),执行初始化的项目启动类是谁(DemoApplication)

项目入口文件代码如下所示:

package com.example.demo;
 
 import org.mybatis.spring.annotation.MapperScan;
 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;
 
 //3:提供SpringBoot项目启动器(初始化项目内部Servlet组件)
 @SpringBootApplication
 // 添加这个注解扫描dao文件
 @MapperScan(basePackages = "com.example.demo.demos.web.dao")
 public class DemoApplication extends SpringBootServletInitializer {
     public static void main(String[] args) {
         SpringApplication.run(DemoApplication.class, args);
     }
 
     // 4:重写一个父类中的方法configure(),执行初始化的项目启动类是谁(DemoApplication)
     @Override
     protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
         // 手动指定启动类
         return builder.sources(DemoApplication.class);
     }
 }

至此,将SpringBoot项目打包成war包的四步配置完成。

 

接下来就是使用IDEA打包了。

打包方式跟jar包一样,点击package即可。

如果报错,大概率是pom.xml文件中配置报错,哪个配置报错就改哪个,要是实在不知道改哪个了,直接注释就可以。

打包成功终端显示:

3.jpg

我们在项目根目录下的target目录下可以看到一个war文件

4.jpg

但是现在有一个小问题,war文件是不可以直接使用java命令执行的。想要测试,就需要配置到tomcat中。

 

二:部署服务器

我们将上方打包完成的war包上传至tomcat服务器的webapps目录下,如下图所示:

5.jpg

接下来,我们需要重启tomcat

进入tomcat下的bin目录

Tomcat启动命令:

./startup.sh

Tomcat停止目录:

./shutdown.sh

 

我们会看到tomcat服务器自动将我们刚上传的war包解压了,如下图所示:

6.jpg

 

我们在浏览器中输入:

http://1.15.157.156:8080/demo-0.0.1-SNAPSHOT/testsss

访问如下图所示:

7.jpg

 

至此,SpringBoot项目打包成war包部署linux服务器完成。

 

有好的建议,请在下方输入你的评论。