SpringBoot项目打成war包并部署到外部Tomcat容器

  • 一、修改pom.xml中将默认的jar包方式改成war
<!-- 将打包方式修改为war-->
<packaging>war</packaging>
  • 二、排除内置的Tomcat容器【以下两种方式均可】
    • 方式1
    <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>
    
    • 方式2
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <!--provided 不参与打包-->
        <scope>provided</scope>
    </dependency>
    
    
  • 三、添加Maven插件【解决低版本打包需要WEB.xml问题】
<build>
    <finalName>boot_pack</finalName>
    <plugins>
        <!--Maven打包插件,解决打包需要WEB.xml问题-->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>3.2.0</version>
        </plugin>

        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <!--解决打包只有几kb问题-->
            <configuration>
                <mainClass>com.hf.pack.BootPackApplication</mainClass>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

  • 四、继承SpringBootServletInitializer 用于构建war包【以下两种方式均可】

    • 方式1:主类上直接继承
    package com.hf.pack;
    
    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;
    
    /**
     * SpringBootServletInitializer  war包容器【项目打jar包时不生效】
     */
    @SpringBootApplication
    public class BootPackApplication extends SpringBootServletInitializer {
    
        public static void main(String[] args) {
            SpringApplication.run(BootPackApplication.class, args);
        }
    
        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
            //指定主启动类的位置
            return builder.sources(BootPackApplication.class);
        }
    }
    
    
    • 方式2:新建一个子类继承
    package com.hf.pack;
    
    import org.springframework.boot.builder.SpringApplicationBuilder;
    import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
    
    /**
     * @Copyright (C), 2016-2020 hf
     * @FileName: ServletInitializer
     * @Author: hf
     * @Date: 2020/1/8 11:14
     * @Description: 用于构建war包容器
     */
    public class ServletInitializer extends SpringBootServletInitializer {
        
        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
            //指定主启动类的位置
            return builder.sources(BootPackApplication.class);
        }
    }
    
    
  • 五、使用Maven命令打包

    • 打包命令
    #执行打包并忽略测试代码
    mvn clean package -Dmaven.test.skip=true
    
    • 注意事项:【当使用外部Servlet容器访问的时候、application.properties或application.yml中的port和context-path属性不再生效】
    #当使用外部Servlet容器访问的时候、port和context-path属性不再生效
    server:
      port: 1111
      servlet:
        context-path: /
    
  • 六、将打包完成的war项目放置外部Tomcat容器进行测试

    • 先将war包放置Tomcat的webapps目录下,并启动Tomcat
      在这里插入图片描述
    • 测试访问
      在这里插入图片描述
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值