关于在Gradle项目管理工具下,创建SpringBoot外置Tomcat项目流程

本文详细介绍了在使用Gradle作为项目管理工具时,如何创建一个SpringBoot外置Tomcat项目。内容包括解决启动Tomcat时找不到web模块的问题,以及创建war包工程的具体步骤,如调整打包方式、配置Tomcat为provided、实现SpringBootServletInitializer等,以确保正确构建web应用目录结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当我们用Gradle做为项目管理工具时,创建一个SpringBoot外置TomCat项目,往往不能够正确启动Tomcat服务器,易出现以下几个问题:

  • 找不到web模板

Tomcat找不到web模块,就会导致开启服务器时候报类似 XXXX.war not found for the web module 的错误!出现这种情况的主要原因是:在Gradle项目管理工具下,Gradle编译器不会自动创建exploded目录,所以Tomcat是无法找到这个目录

但是Tomcat需要找到这个目录才能正常运行,所以,没有的话,肯定会抛出异常,如果想不抛出异常,有两种设置

  • 在tomcat服务器的编辑配置中,将服务器启动时部署设置为.war结束的包,这种情况,容易出现很多问题。
  • 如果是以.war(exploded)结束的包进行部署,那么需要将构建工具Gradle在构建对选择框中,选择intelliJIDEA

具体流程如下图:
在这里插入图片描述
在这里插入图片描述

如何使用SpringBoot中外部Servlet的容器

使用内置Servlet容器,需要将应用打包成jar包,Jar包通过java激活内置的Servlet容器,其特点为:

  • 优点:简单、方便
  • 缺点:不支持Jsp、可定制性比较差,想做一些性能优化可配置性差

使用自定义的Servlet容器,需要将应用打包成war包,然后通过外部的Servlet容器进行加载

  • 优点:可支持JSP。可配置性强!

具体创建步骤如下:

1.创建一个关于war包的工程

创建的war包,和之前的的jar有如下几点区别

  • 打包方式是war
<packaging>war</packaging> 
  • 将内置的tomcat的scope配置为provided

在maven中的写法

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <version>2.5.2</version>
    <scope>provided</scope>
</dependency

在Gradle中的写法

providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
  • 多了一个继承于SpringBootServletInitializer的类ServletInitializer,他是做为一个启动应用的一个类

这个类要求:

  1. 这个类必须继承:SpringBootServletInitializer
  2. j必须重写SpringBootServletInitializer这个类的方法configure
  3. 必须调用application.source()这个方法,而且里面的参数是必须是主程序类的结构信息
@SpringBootApplication
// TODO: 2021/7/22 必须继承于接口SpringBootServletInitializer 
public class CustomerMainClass extends SpringBootServletInitializer {
    // TODO: 2021/7/22 重写方法configure 
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        SpringApplicationBuilder sources = builder.sources(CustomerMainClass.class);
        return sources;
    }

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

2.构建完成web应用目录结构

war中,完整的应用目录结构需要有webapp,和webapp里面的WEB-INF,及web.xml

  • 通过手动创建(这种情况在熟知目录结构的情况下比较适合!)
  • 通过项目结构来创建

注意点:对于war包,只有tomcat8.0以上的版本才能够识别,而且,无论是用Maven项目管理工具,还是Gradle项目管理工具,都必须考虑到JDK版本,启动模板(像Gradle就不能启动.war(exploded)模块,只能修改Gradle中的设置为InteliJIDEA才能运行。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值