springBoot项目打包war包部署到tomcat

第一步:修改pom.xml

变成war包

    <groupId>com.example</groupId>
    <artifactId>springdemo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>

排除org.springframework.boot依赖中的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>

添加对servlet API的依赖

      <!-- jsp支持开启 -->  
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
        </dependency>
        <!-- servlet支持开启 -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
        </dependency>

继承SpringBootServletInitializer ,并覆盖它的 configure 方法,如下图代码,为什么需要提供这样一个SpringBootServletInitializer子类并覆盖它的config方法呢,我们看下该类原代码的注释:

/**Note that a WebApplicationInitializer is only needed if you are building a war file and
 * deploying it. If you prefer to run an embedded container then you won't need this at
 * all.

如果我们构建的是war包并部署到外部tomcat则需要使用它,如果使用内置servlet容器则不需要,外置tomcat环境的配置需要这个类的configure方法来指定初始化资源。

@SpringBootApplication
@EnableAutoConfiguration
@MapperScan(basePackages = {"com.example.springdemo"})
public class SpringdemoApplication extends SpringBootServletInitializer {

    /**
     * 需要把web项目打成war包部署到外部tomcat运行时需要改变启动方式
     */
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(SpringdemoApplication.class);
    }
    // springboot运行后此方法首先被调用
    // 实现CommandLineRunner抽象类中的run方法
    public static void main(String[] args) {
        SpringApplication.run(SpringdemoApplication.class, args);
    }
}

如果像我一样在webapp的WEB-INF的lib下引入了第三方的jar包就还需要把第三方jar包加进来

 <build>
        <plugins>
            <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>
                    <webResources>
                        <resource>
                            <directory>src/main/webapp</directory>
                            <targetPath>WEB-INF/lib/</targetPath>
                            <includes>
                                <include>**/*.jar</include>
                            </includes>
                        </resource>
                    </webResources>
                </configuration>
            </plugin>
        </plugins>
    </build>

最后如果编辑器中包含了自带的maven则使用以下命令打war包(不然就在前面加maven clean package。。)

clean package -Dmaven.test.skip=true

这样把war包打成功之后,可以在项目上的target文件夹中找到,自己可以重命名,最后放到自己tomcat服务器中的webapp下运行就可以了

Spring Boot 打包WAR 文件并部署Tomcat 服务器的过程大致如下: 1. **配置 Spring Boot 应用**: - 确保你的 `pom.xml` 文件中没有使用 Spring Boot 的默认打包方式 `jar`,而是使用 `war`。你需要在 `<packaging>` 标签中指定为 `war`。 - 移除 `spring-boot-starter-tomcat` 依赖中的作用域为 `provided` 的配置,因为在 WAR 部署到外部的 Servlet 容器(比如 Tomcat)时,容器会提供相关的依赖。 - 创建一个继承自 `SpringBootServletInitializer` 的配置类,并重写 `configure` 方法。这确保了 Spring Boot 应用可以在传统的 Servlet 容器中正常运行。 示例配置: ```java @SpringBootApplication public class MyApplication extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(MyApplication.class); } } ``` 2. **打包 WAR 文件**: - 在项目根目录下运行 Maven 的打包命令:`mvn clean package`。 - 如果一切正常,你将在 `target` 目录下找到一个 `.war` 文件。 3. **部署Tomcat**: - 将打包好的 `.war` 文件复制到 Tomcat 的 `webapps` 目录下。 - 启动或重启 Tomcat 服务器。Tomcat 会自动解压 `.war` 文件并部署应用。 - 通过浏览器或使用工具访问你的应用,通常访问的 URL 格式为 `http://<服务器地址>:<端口号>/<应用上下文路径>`。 注意:确保 Tomcat 服务器的版本与你的应用兼容,以及所有相关的环境配置正确无误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值