springboot项目部署(war包)

将springboot项目打包成war,并且部署到tomcat。比较麻烦,自己踩的坑也比较多。算了一下,找bug的时间,有两天熬到凌晨2点。

修改pom.xml使得打包成war

<groupId>com.yanzhen</groupId>
<artifactId>dormitory</artifactId>
<version>0.0.1-SNAPSHOT</version>
<description>Demo project for Spring Boot</description>
<packaging>war</packaging> <!--更改这里-->

修改pom.xml排除内置的Tomcat(不然报错404)

<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>

添加tomcat启动器

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>

在build配置项目的打包名

<build>
    <finalName>dormitory</finalName>
</build>

打包之后的项目名就是dormitory

image-20210127110624791

修改启动类

继承自SpringBootServletInitializer并重写SpringApplicationBuilder方法

@SpringBootApplication
@MapperScan({"com.dj.mapper"})//配置到mapper
public class DormitoryApplication extends SpringBootServletInitializer {

    public static void main(String[] args) {
        SpringApplication.run(DormitoryApplication.class, args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(DormitoryApplication.class);
    }
}

maven打包

先执行maven clean ,再执行maven package,那么就会在target目录下生成了dormitory.war

image-20210127110908411

部署到tomcat

dormitory.war放入tomcat中的webapps

image-20210127111132915

启动tomcat

在windows中运行,linux类似

cd bin
startup.bat

启动成功之后,会发现生成了一个dormitory的文件夹,项目也运行起来了。

image-20210127111403770

测试

image-20210127111547799

测试注意点(一定要看)

由于不使用Spring Boot 自带的Tomcat,所以在application中配置服务器server是无效的。

如果需要修改端口port,修改tomcat的端口,即这边设置的端口也不会生效,会使用tomcat的默认端口。]

tomcat修改默认端口:https://www.cnblogs.com/wzstudy/p/10690656.html

如果部署到云服务器需要开放两边的端口,宝塔和服务器的

如果需要context-path,需要在前面设置build的打包名改成context-path的值(打包名就不用/)

image-20210127111737752

<build>
    <finalName>dormitory</finalName>
<build>

如果你没有设置context-path,你想要访问的效果是http://localhost:8080/login,那么你就需要将打包名改成ROOT

<build>
    <finalName>ROOT</finalName>
<build>

image-20210127112511557

这样项目就会直接编译到原本ROOT文件中

参考链接

部署springboot项目到云服务器的两种方式(jar+war)

SpringBoot项目部署(war包,jar包)

SpringBoot部署 –war方式

修改tomcat默认端口

posted @ 2021-01-27 11:29  DJ同学  阅读(558)  评论(0编辑  收藏  举报