springboot: 在外部tomcat中运行

本文介绍了如何在SpringBoot项目中使用`spring-boot-starter-tomcat`依赖、移除`spring-boot-maven-plugin`并添加`maven-war-plugin`,以及在pom.xml中设置打包和在Tomcat服务器配置中修改默认访问路径,确保SpringBoot应用部署到Tomcat正确运行。

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

1. 在pom.xml中加入
<dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-tomcat</artifactId>
       <scope>provided</scope>
</dependency>

2. 在pom.xml中加入 去掉 spring-boot-maven-plugin 加入 maven-war-plugin
            <!--
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <configuration>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                </configuration>
            </plugin>

3. 在pom.xml中加入 还需要在project标签下加入
<packaging>war</packaging>

4. 在Application启动类中修改
需要继承SpringBootServletInitializer类    extends SpringBootServletInitializer{

protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
     return application.sources(SecurityApplication.class);
 }


5. 修改tomcat的默认访问路径
打开tomcat文件夹下的conf,修改server.xml文件,如下:
切记!切记!切记! path="/"  里面必须加 / 

<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
    <Context path="/" docBase="D:\apache-tomcat-8.0.52\webapps\abc"> </Context> 
</Host>


 

<think>嗯,用户想知道如何将Spring Boot项目部署到Tomcat运行。首先,我需要回想一下相关的知识。记得Spring Boot默认是内嵌Tomcat,直接打包成JAR运行的。但如果要部署到外部Tomcat,需要做一些调整。 首先,用户需要将项目打包成WAR而不是JAR。这涉及到修改pom.xml文件,把打包方式从jar改成war。然后,可能需要排除内嵌的Tomcat依赖,避免冲突。这时候应该引用相关的引用内容,比如引用[3]提到要修改Maven的打包方式。 接下来,可能需要让主类继承SpringBootServletInitializer,并重写configure方法。引用[2]中的DemoApplication扩展了这个类,所以需要指导用户修改他们的主类。这部分需要注意代码的正确性,确保用户不会出错。 然后,配置Tomcat的相关部分。比如,在application.properties中设置上下文路径和端口,不过如果部署到外部Tomcat,端口可能由Tomcat控制,这部分可能需要说明。另外,打包后的WAR文件需要放到Tomcat的webapps目录下,或者通过Tomcat Manager部署,引用[4]中有提到这些方法。 可能还需要考虑多实例部署的情况,比如使用不同的端口或者Docker容器。不过用户可能暂时只需要基础配置,所以这部分可以作为扩展提到。 最后,用户可能会有疑问,比如依赖冲突或者访问路径问题,应该在注意事项里提醒他们检查依赖和日志。同时,生成相关问题可以帮助用户深入了解更多优化或配置细节,比如性能调优或者多环境配置。 总之,步骤应该是:修改打包方式,排除内嵌Tomcat,调整主类,配置Tomcat,打包部署,最后验证。确保每一步都清晰,并引用正确的参考资料,这样用户能一步步跟着操作,避免常见错误。</think>### 如何将Spring Boot项目部署到Tomcat运行? #### 步骤 1:修改项目打包方式 1. 在`pom.xml`中修改打包格式为`war`: ```xml <packaging>war</packaging> ``` 2. 排除Spring Boot内嵌的Tomcat依赖(避免冲突)[^3][^4]: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> <!-- 声明为外部提供 --> </dependency> ``` #### 步骤 2:修改主启动类 继承`SpringBootServletInitializer`并重写`configure`方法,以支持外部Tomcat启动[^2][^4]: ```java @SpringBootApplication public class DemoApplication extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(DemoApplication.class); } public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } } ``` #### 步骤 3:配置Tomcat部署参数 在`application.properties`中添加以下配置(可选): ```properties server.servlet.context-path=/myapp # 设置应用上下文路径 server.port=8080 # 仅在内嵌Tomcat运行时生效,外部Tomcat忽略此配置 ``` #### 步骤 4:打包与部署 1. 通过Maven打包生成WAR文件: ```bash mvn clean package ``` 2. 部署到Tomcat: - **方式1**:将生成的`myapp.war`直接复制到Tomcat的`webapps`目录,Tomcat会自动解压并部署。 - **方式2**:通过Tomcat Manager上传并部署(需配置管理员权限)。 #### 验证部署 1. 启动Tomcat: ```bash ${TOMCAT_HOME}/bin/startup.sh # Linux ${TOMCAT_HOME}/bin/startup.bat # Windows ``` 2. 访问应用: ``` http://localhost:8080/myapp ``` #### 注意事项 - **依赖冲突**:确保项目中无与Tomcat版本冲突的依赖(如Servlet API)。 - **日志查看**:部署失败时可检查`${TOMCAT_HOME}/logs/catalina.out`。 - **上下文路径**:若WAR文件名与访问路径不一致,需在Tomcat的`server.xml`中配置`Context`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值