默认场景下,Springboot作为一个jar运行,但是在某些特殊场景下 需要将后台和其他应用共用一个web容器(tomcat之类);

客户强制要求(例如策略只给了一个端口);

其他;

可以打包成war文件进行发布。

分步指南
一般情况下,将springboot工程打包为war分为以下几个步骤:

修改pom.xml,将打包方式设置为war 修改jar为war

移除springboot默认的tomcat配置

移除默认的spring-boot-starter-tomcat,使用provided

<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> 
<dependency> 
        <groupId>org.springframework.boot</groupId> 
        <artifactId>spring-boot-starter-tomcat</artifactId> 
        <scope>provided</scope> 
</dependency>

添加tomcat-servelt-api依赖

*注意根据自己的情况修改version

<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>javax.servlet-api</artifactId>
  <version>3.1.0</version>
  <scope>provided</scope>
</dependency>
<dependency> 
      <groupId>org.apache.tomcat</groupId> 
      <artifactId>tomcat-servlet-api</artifactId> 
      <version>8.0.36</version> 
      <scope>provided</scope> 
</dependency>

修改启动方法

增加configure配置

@SpringBootApplication
public class ServerApplication extends SpringBootServletInitializer {
   
  @Override
  protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
    return builder.sources(ServerApplication.class);
  }
 
  public static void main(String[] args) {
    SpringApplication.run(ServerApplication.class, args);
  }
}

添加打包插件

在pom.xml的build > plugins 中添加打包插件,可以指定打包的名称等配置

<plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-war-plugin</artifactId> 
      <configuration> 
          <warSourceExcludes>src/main/resources/**</warSourceExcludes> 
          <warName>yehuo</warName>
          <failOnMissingWebXml>false</failOnMissingWebXml>
      </configuration> 
</plugin>

修改项目的context-path与warName一致 修改application.properties的context-path和port等信息和实际部署的情况改为一致

server.port=server.context-path=yehuo
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐