• springboot打成war包



    摘要

    本文主要以企业级应用服务器(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配置
    改配置

    <build><plugins>段里加war包插件
                <plugin>
                    <groupId>org.apache.maven.pluginsgroupId>
                    <artifactId>maven-war-pluginartifactId>
                    <version>3.1.0version>
                plugin>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    如果war放在tomcat下启动出现Class not found的问题,可能是因为一些dependency(比如springfox)的scope为provided,
    provided
    这个时候把注释掉就行。

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

      <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.bootgroupId>
                    <artifactId>spring-boot-starter-tomcatartifactId>
                exclusion>
            exclusions>
        dependency>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-tomcatartifactId>
            <scope>providedscope>
        dependency>
        <dependency>
            <groupId>javax.servletgroupId>
            <artifactId>javax.servlet-apiartifactId>
            <version>3.1.0version>
            <scope>providedscope>
        dependency>
        <dependency>
            <groupId>org.apache.tomcatgroupId>
            <artifactId>tomcat-servlet-apiartifactId>
            <version>9.0.45version>
            <scope>providedscope>
        dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    在标签内加入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);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    打包部署

    做完以上修改后,就可以用maven->clean,maven->package打包,生成的war包应该在target目录下。
    可以先把war包放到tomcat webapps目录下启动测试下,然后再上传到app server。

  • 相关阅读:
    腾讯mini项目-【指标监控服务重构】2023-08-06
    linux中nginx配置https
    点亮你的证件照!自制背景颜色修改脚本揭秘!
    php反序列化+题
    JuiceFS 在 Elasticsearch/ClickHouse 温冷数据存储中的实践
    ubuntu下yolox tensorrt模型部署
    家里蹲了七个月的大学生活是怎么度过的?
    实战Netty!基于私有协议,怎样快速开发网络通信服务?
    Centos7部署gitlab
    简单YUV数据转换
  • 原文地址:https://blog.csdn.net/wangxudongx/article/details/134072201