如何将IDEA中SpringBoot项目打成war包并部署到Tomcat?

1. 项目pom文件中使用<packing>war</packing>

2. 排除SpringBoot中内置的Tomcat(两种方式)

  方式一:排除spring-boot-starter-web中的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>
    <!--打包的时候可以不用包进去,别的设施会提供。事实上该依赖理论上可以参与编译,测试,运行等周期。相当于compile,但是打包阶段做了exclude操作-->
    <scope>provided</scope>
</dependency>

3. 启动类继承SpringBootServletInitializer实现configure

注意事项:

使用外部Tomcat部署访问的时候,application.properties(或者application.yml)中配置的
server.port=
server.servlet.context-path=
将失效,请使用tomcat的端口,tomcat,webapps下项目名进行访问。
为了防止应用上下文所导致的项目访问资源加载不到的问题,
建议pom.xml文件中<build></build>标签下添加<finalName></finalName>标签

<build>
  <!-- 应与application.properties(或application.yml)中context-path保持一致 -->
  <finalName>war包名称</finalName>
  <plugins>
    <plugin>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>
  </plugins>
</build>

4. 通过Maven的clean package进行打包

 注意: 在第2步过程中,可能会出现以下错误:

 解决方案: 在pom.xml文件中引入以下依赖

<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>
     <groupId>javax.servlet</groupId>
     <artifactId>javax.servlet-api</artifactId>
     <version>3.1.0</version>
     <scope>provided</scope>
</dependency>

5. 将打包后生成的war文件放置在Tomcat的webapps目录下

1. 打包生成后的war文件

 2. 放置到Tomcat的webapps目录下

6. 通过Tomcat的${Catalina.home}/bin/startup.bat启动项目

1. 启动项目,出现以下字样表示启动成功

 2. 项目Controller类中的接口

 3. 浏览器访问,localhost:9001/index.do,出现以下界面。   (此时的端口号为Tomcat中启动的端口号,而非之前SpringBoot中启动的端口号)

如何解决这个问题?

在${Catalina.home}/conf/server.xml文件下,添加以下内容:

 注意:如果访问接口或者资源文件需要保留项目名称,则可以不需要上一步,只需要在访问时添加项目名称。如:localhost:port/summer-rain/index.do

tomcat灵活配置:

 


  (docBase:最后的一个反斜杠不能省略,访问localhost:8080/)


 


 


 


转自:https://blog.csdn.net/qq_33512843/article/details/80951741

posted @ 2020-06-10 22:14  减字木兰花·回风落景  阅读(1068)  评论(0)    收藏  举报