SpringBoot项目如何打包部署到tomcat中去

本文介绍了如何将SpringBoot项目打包成war包并部署到Tomcat。提供了新建项目时选择WAR打包方式,以及已建好的jar包项目如何调整修改pom.xml和启动类,以适应war包部署。通过Maven Install打包后,将war包放入Tomcat的webapps目录下启动即可。注意部署后的访问路径变化。

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

SpringBoot项目如何打包成war包

       最近朋友做了一个springboot的小项目,需要发布到tomcat上去运行起来,但是打包的时候却发现,只能打包成jar包的形式,无法打包成war包,今天把自己的解决方案写下来,以供参考(eclipse版本):
       一共有两种解决方案:

方案一:

       如果是新建的项目,那么可以在一开始就选择打包方式为WAR,这样打包成的项目就是war包的形式。
springboot项目的创建
查看我们的pom.xml文件:
打包方式
tomcat

此处的 provided代表了springboot自带的tomcat在编译的时候需要,而发布的时候忽略。
       启动类的目录中多了ServletInitializer.java类,大家可以私下去了解它,此处不做解释。

       这是第一种方案中打包war包的形式,以上这些步骤缺一不可,所以如果大家打包失败,可以看看pom.xml文件和启动类的目录是否与小编一致。

方案二:
       如果现在的项目已经是一jar包的方式建好了的项目,可以对项目做出以下调整修改:

  • 修改pom.xml文件

       1.修改打包方式:

<packaging>war</packaging>

       2.除嵌入式tomcat插件

       在pom.xml里找到spring-boot-starter-web依赖节点,在其中添加如下代码:

<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>

       3.添加servlet-api 的依赖:

dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <scope>provided</scope>
</dependency>

       4.定义打包的项目名称(可不设置):

<build>
	    <finalName>SpringBoot_MyBatis</finalName>
		<plugins>
	        <plugin>
	            <groupId>org.apache.maven.plugins</groupId>
	            <artifactId>maven-surefire-plugin</artifactId>
	            <configuration>
	                <testFailureIgnore>true</testFailureIgnore>            
	            </configuration>
	        </plugin>
	    </plugins>
	</build>
  • 修改启动类:
package com.demo;

import org.mybatis.spring.annotation.MapperScan;
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
@MapperScan("com.demo.dao")
//继承SpringBootServletInitializer类
public class SpringBootMybatisApplication extends SpringBootServletInitializer{

	public static void main(String[] args) {
		SpringApplication.run(SpringBootMybatisApplication.class, args);
		System.out.println("启动成功");
	}
	/**
	 *新增此方法
	 */
	@Override
	protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
		// 注意这里要指向原先用main方法执行的Application启动类
		return builder.sources(SpringBootMybatisApplication .class);
	}
}

打包:
       选中项目,右键–>Run AS --> Maven Install即可,找到打包好的war包,放入tomcat的webapps目录下面,启动即可。

注意:
       我们的SpringBoot的项目访问路径为:http:ip/port/…后面的是requestMapping的值,而部署到了tomcat中访问的地址应该为:http:ip/port/项目名称/…

### 打包部署Spring Boot项目Tomcat服务器 Spring Boot 提供了一种简化的方式,使开发人员能够轻松创建独立运行的应用程序。然而,在某些情况下,可能需要将 Spring Boot 应用程序部署到外部 Tomcat 容器中而不是嵌入式的 Tomcat 服务器[^1]。 #### 修改构建工具配置 为了实现这一点,首先需要调整项目的构建文件(Maven 或 Gradle)。以下是 Maven 的 `pom.xml` 配置示例: ```xml <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> <dependencies> <!-- Exclude the embedded 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> <!-- Add dependency for external Tomcat --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <scope>provided</scope> </dependency> </dependencies> ``` 上述代码片段展示了如何排除默认的嵌入式 Tomcat 并引入外部 Tomcat 支持所需的依赖项[^2]。 #### 创建Servlet初始化类 当应用被部署至外部容器时,需提供一个 Servlet 初始化类来替代传统的 `main` 方法。下面是一个典型的例子: ```java 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(YourApplicationClass.class); } } ``` 此步骤确保了即使没有内置的 `main` 函数,也可以正常启动 Spring 上下文环境[^3]。 完成以上更改之后,可以按照常规方式打包成 WAR 文件并通过标准流程上传至目标 Tomcat 实例上执行即可。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值