springboot打成war包
作者:mmseoamin日期:2023-12-21

spring boot 打成war包

  • 摘要
  • 环境
  • 修改maven配置
  • 环境配置文件的调整
  • 启动类引导
  • 打包部署

    摘要

    本文主要以企业级应用服务器(weblogic、普元app server)部署应用的项目背景下,讲述了如何在Spring Boot 2.5.x环境下将项目打包成WAR包,并在Tomcat 9上运行。首先,需要在Maven配置中添加Maven War插件,并排除掉spring-boot-starter-web依赖中的集成tomcat包,然后添加tomcat依赖和servlet API。其次,需要在pom.xml文件中加入war标签以标识项目将被打包成WAR包。此外,如果在使用配置文件并且需要指定profiles.active,那么需要在application配置文件中指定spring.profiles.active=prod。最后,需要增加一个启动类,该类需要放在application.class类同目录下,并引导SpringApplicationBuilder进行配置。


    环境

    Idea 2023

    Windows 10

    tomcat 9

    maven

    springboot 2.5.x

    修改maven配置

    maven配置

    改配置

    段里加war包插件
                
                    org.apache.maven.plugins
                    maven-war-plugin
                    3.1.0
                
    

    如果war放在tomcat下启动出现Class not found的问题,可能是因为一些dependency(比如springfox)的scope为provided,

    provided

    这个时候把注释掉就行。

    要把spring-boot-starter-web依赖里的集成tomcat包排除掉,并单独添加tomcat依赖。

      
            org.springframework.boot
            spring-boot-starter-web
            
                
                    org.springframework.boot
                    spring-boot-starter-tomcat
                
            
        
        
            org.springframework.boot
            spring-boot-starter-tomcat
            provided
        
        
            javax.servlet
            javax.servlet-api
            3.1.0
            provided
        
        
            org.apache.tomcat
            tomcat-servlet-api
            9.0.45
            provided
        
    

    在标签内加入war标签,放在、一块就行。

    环境配置文件的调整

    如果配置使用的是配置文件,并需要指定profiles.active那么需要自行在application(default配置文件里指定spring.profiles.active=prod。

    启动类引导

    增加启动类,使用war包后APP类的启动需要引导,此类要放到application.class类同目录下。

    class SpringbootProfileServletInitializer extends SpringBootServletInitializer {
        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
            return builder.sources(Application.class);
        }
    }
    

    打包部署

    做完以上修改后,就可以用maven->clean,maven->package打包,生成的war包应该在target目录下。

    可以先把war包放到tomcat webapps目录下启动测试下,然后再上传到app server。