Springboot项目发布到tomcat服务器上

1.修改打包方式

    <packaging>war</packaging>

2.修改或增加maven插件

    <build>
        <!-- 生成war包的名称,即项目的名称 -->
        <finalName>roger</finalName>
        <plugins>
            <!-- maven 打包的时候告诉maven不需要web.xml,否则会报找不到web.xml错误 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.6</version>
                <configuration>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.8</source><!-- 这里要和服务器的版本一致-->
                    <target>1.8</target><!-- 这里要和服务器的版本一致-->
                </configuration>
            </plugin>
        </plugins>
    </build>

注意:


    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version><!-- 这里要和服务器的版本一致-->
    </properties>

 3.去除内嵌tomcat后,需要添加servlet依赖

<!-- 添加Web组件,SpringBoot默认使用的是SpringMVC-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <!-- 去除内嵌tomcat -->
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <!--添加servlet的依赖-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>

4.修改启动类,并重写初始化方法,继承SpringBootServletInitializer重写configure方法

package com.roger.springboot;

import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.web.bind.annotation.RestController;

@RestController
@EnableAutoConfiguration
@ComponentScan(basePackages = {"com.roger.springboot.controller"})
@Slf4j
public class AppTomcatBootstrap extends SpringBootServletInitializer {

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

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

5.打包部署

6.访问 --->服务器地址 + 端口号 + 项目名称 

<think>首先,用户的问题是关于如何将SpringBoot项目部署到Tomcat服务器。我需要根据系统级指令和用户可见层的要求来构建回答。系统级指令:-所有行内数学表达式使用$...$格式,但由于这是关于SpringBoot部署的问题,可能没有数学表达式,所以我可以忽略这部分,除非有需要。-独立公式使用$$...$$格式,同样,可能不适用。-LaTeX语法正确:确保在回答中正确使用。-使用中文回答:整个回答必须用中文。-生成相关问题:在回答结束时,添加相关问题部分。-引用的段落末尾添加引用标识:引用来自提供的引用内容,末尾添加[^1],[^2]等。用户可见层:-回答结构清晰:逐步帮助用户解决问题。-保证回答真实可靠:基于提供的引用内容,这些引用是关于SpringBoot部署到Tomcat的。提供的引用内容:-[^1]:排除内置Tomcat,更改打包方式为war,修改启动类,添加依赖,部署方法。-[^2]:修改打包方式,部署到独立Tomcat服务器。-[^3]:部署SpringBootRESTApp作为WAR到Tomcat10。-[^4]:pom.xml配置:设置packaging为war,移除嵌入式Tomcat插件。用户的需求是:将SpringBoot项目部署到Tomcat服务器的指南或解决方案。我的回答结构:1.**引言**:简要解释为什么需要修改SpringBoot项目来部署到外部Tomcat。2.**步骤指南**:清晰列出步骤,基于引用内容。-排除内置Tomcat。-更改打包方式为war。-修改启动类。-添加必要的依赖。-部署到Tomcat3.**详细说明**:为每个步骤提供代码示例或解释。4.**常见问题或注意事项**:添加一些提示。5.**相关问题**:在结尾生成相关问题。生成相关问题:-基于主题,生成2-3个相关问题,如优化、性能、常见问题。确保引用:-在回答中,当引用特定内容时,在段落末尾添加引用标识。例如,提到排除内置Tomcat时,添加[^1]。回答用中文。大纲回答:1.开头:SpringBoot默认使用嵌入式Tomcat,但部署到外部Tomcat需要修改项目。2.步骤:-步骤1:在pom.xml中设置打包方式为war。引用[^2],[^4]。-步骤2:排除嵌入式Tomcat依赖。引用[^1],[^4]。-步骤3:修改启动类。引用[^1]。-步骤4:添加依赖(如果需要)。引用[^1]。-步骤5:打包项目并部署到Tomcat。引用[^1],[^3]。3.代码示例:提供简单的代码片段。4.结尾:相关问题。相关问题示例:1.部署后出现404错误如何解决?2.如何优化SpringBoot应用在Tomcat上的性能?3.SpringBoot部署到Tomcat有哪些常见问题?</think>### 如何将Spring Boot项目部署到Tomcat服务器 Spring Boot 默认使用嵌入式 Tomcat 服务器运行应用,但在生产环境中,您可能需要将项目部署到独立的 Tomcat 服务器上。这需要对项目进行一些修改,以确保兼容性和正确部署。以下是一个清晰的步骤指南,基于实际开发实践和可靠参考。每个步骤都包含代码示例和注意事项,帮助您逐步完成部署。 #### 步骤 1: 修改打包方式为 WAR 在 Spring Boot 项目中,默认打包方式是 JAR(用于嵌入式服务器),但部署到外部 Tomcat 需要改为 WAR 格式。 - 在 `pom.xml` 文件中,添加或修改 `<packaging>` 标签: ```xml <packaging>war</packaging> ``` 这确保项目构建时生成 WAR 文件,而不是 JAR 文件[^2]。 #### 步骤 2: 排除内置 Tomcat 依赖 Spring Boot 的 starter 依赖包含嵌入式 Tomcat,必须排除它,以避免冲突。 - 在 `pom.xml` 中,添加以下依赖配置: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> <!-- 表示 Tomcat 由外部服务器提供 --> </dependency> ``` 这确保在构建时排除嵌入式 Tomcat,依赖项由外部 Tomcat 服务器提供[^1][^4]。 #### 步骤 3: 修改启动类 Spring Boot 的默认启动类需要扩展 `SpringBootServletInitializer` 以支持外部 Tomcat 部署。 - 打开主启动类(通常名为 `Application.java`),修改代码如下: ```java 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; @SpringBootApplication public class Application extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(Application.class); // 配置外部服务器启动 } public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` 这一步使项目能通过 Tomcat 的 Servlet 容器初始化[^1]。 #### 步骤 4: 添加必要依赖(可选) 如果项目使用特定功能(如 JSP),可能需要添加额外依赖。 - 在 `pom.xml` 中,添加 Tomcat 相关依赖(通常已通过步骤 2 处理,但检查是否需要): ```xml <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <scope>provided</scope> </dependency> ``` 确保所有依赖的 scope 正确设置,避免打包冲突[^4]。 #### 步骤 5: 打包并部署到 Tomcat 完成代码修改后,构建项目并部署 WAR 文件到 Tomcat 服务器。 1. **打包项目**: - 在项目根目录运行 Maven 命令: ``` mvn clean package ``` 生成的 WAR 文件位于 `target/` 目录下(例如 `your-project-name.war`)。 2. **部署到 Tomcat**: - **方法一(直接部署)**: 将 WAR 文件复制到 Tomcat 的 `webapps/` 目录下,启动 Tomcat 服务器(运行 `bin/startup.sh` 或 `bin/startup.bat`)。Tomcat 会自动解压并部署应用。 - **方法二(IDEA 集成)**: 在 IntelliJ IDEA 中,配置 Tomcat 服务器: - 打开 "Run/Debug Configurations",添加 "Tomcat Server"。 - 指定 Tomcat 安装路径,并在 "Deployment" 选项卡中添加 WAR 文件。 启动服务器后,访问 `http://localhost:8080/your-project-name` 验证部署[^1][^3]。 #### 常见问题与注意事项 - **404 错误**:如果部署后访问 URL 出现 404,检查 WAR 文件名是否与上下文路径匹配,或确保启动类正确扩展 `SpringBootServletInitializer`[^1]。 - **版本兼容性**:确保 Tomcat 版本与 Spring Boot 兼容(例如 Tomcat 10 支持 Spring Boot 3.x)[^3]。 - **性能优化**:在外部 Tomcat 上,可调整 `server.xml` 中的连接池参数以提高性能。 - **测试建议**:在部署前,本地测试 WAR 文件是否正常运行(例如使用 `java -jar your-project.war`)。 通过以上步骤,您的 Spring Boot 项目应能成功部署到 Tomcat 服务器。如果您遇到问题,可参考 Spring Boot 官方文档或社区资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值