springboot项目打war包

258 阅读1分钟
  1. 将项目默认的package方式由jar改成war
  <groupId>com.cx</groupId>
  <artifactId>artifactName</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>
  1. 排除内置的tomcat插件
    <!--springBoot整合web依赖-->
    <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>
  1. 添加spring-boot-starter-tomcat的provided依赖,这个依赖是编译时的依赖,运行是不需要
  <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-tomcat</artifactId>
      <!--打包的时候可以不用包进去,别的设施会提供,事实上该依赖理论上可以参与编译,测试,运行等周期。
          相当于compile,但是打包阶段做了exclude操作(scope)-->
      <scope>provided</scope>
    </dependency>
  1. 添加maven-war-plugin插件
  <!--finalName是打包后的war包名称,比如这里应该是artifactIdName.war-->
  <build>
    <finalName>${project.artifactId}</finalName>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>
  1. 修改启动类,继承SpringBootServletInitializer类并重写configure()方法
/**
 * Created by chenxiong on 18/11/24.
 */
@SpringBootApplication
public class MainApplication extends SpringBootServletInitializer {

    public static void main(String[] args) throws Exception{
        SpringApplication.run(MainApplication.class,args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return super.configure(builder);
    }
}
  1. 打包:切换到当前项目路径下,输入maven打包命令
mvn clean package 
  1. 访问路径改变:项目部署前要记得修改html中的一些路径
    eg. localhost:8080/to_login =>localhost:8080/warName/to_login