跳至主要內容

Spring Boot应用部署 - WAR包部署

bsfc.tech大约 2 分钟框架Spring Boot

WAR包部署

将Spring Boot应用部署为WAR包并部署到外部Tomcat服务器上,需要进行一些特定的配置和步骤。以下是详细说明:

1. 修改打包方式

在项目的构建工具配置文件中(通常是pom.xml for Maven或build.gradle for Gradle),将打包方式改为war。以下是两种构建工具的具体示例:

Maven

pom.xml中的<packaging>标签设置为war

<project>
    <!-- ... -->
    <packaging>war</packaging>
    <!-- ... -->
</project>

Gradle

build.gradle中设置apply plugin: 'war'并确认bootWar任务被启用:

plugins {
    id 'org.springframework.boot' version '...' // 使用合适的Spring Boot版本
    id 'io.spring.dependency-management' version '...' // 可选,用于管理依赖版本
    id 'war' // 添加war插件
}

// 如果使用Kotlin DSL
plugins {
    id("org.springframework.boot") version "..." // 使用合适的Spring Boot版本
    id("io.spring.dependency-management") version "..." // 可选,用于管理依赖版本
    id("war") // 添加war插件
}

2. 排除内置Tomcat

为了防止与外部Tomcat服务器产生冲突,需要在构建配置中排除Spring Boot的内嵌Tomcat依赖。在Maven的pom.xml中添加以下依赖排除:

<dependencies>
    <!-- ... -->
    <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>
    <!-- ... -->
</dependencies>

对于Gradle,在dependencies块中使用exclude关键字:

dependencies {
    implementation('org.springframework.boot:spring-boot-starter-web') {
        exclude group: 'org.springframework.boot', module: 'spring-boot-starter-tomcat'
    }
    // ...
}

3. 配置SpringBootServletInitializer

为了让Spring Boot应用能够由外部Servlet容器如Tomcat加载,需要创建一个继承自SpringBootServletInitializer的类,并重写configure方法:

import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

public class ServletInitializer extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(Application.class);
    }

}

这里Application.class是您的主应用程序类,包含@SpringBootApplication注解。

4. 构建WAR文件

使用对应的构建工具命令生成WAR包:

Maven

mvn clean package

生成的WAR文件通常位于target目录下,文件名为your-project-name-<version>.war

Gradle

./gradlew clean build

生成的WAR文件位于build/libs目录下,文件名为your-project-name-<version>.war

5. 部署到Tomcat

将生成的WAR文件复制到Tomcat的webapps目录下。如果您正在运行Tomcat服务,它会自动检测到新部署的WAR文件并进行解压及部署。如果您尚未启动Tomcat,启动后它同样会处理新部署的WAR文件。

6. 访问应用

部署完成后,您可以使用以下URL访问您的Spring Boot应用:

http://localhost:8080/your-project-name

这里的your-project-name通常对应WAR文件的基础名称(不带版本号)。如果在部署过程中更改了上下文路径,访问URL应相应调整。