springboot默认打包形式是生成可执行jar包,如果想实现本地开发和测试打jar包,生产环境打war包,就需要更改几个地方
1. 复制并重命名启动类,修改内容
2. pom文件设置启动类、打包方式改成war、排除内置tomcat
3. 执行maven打包命令时加上 -f pom_xxx.xml命令(指定pom文件)
上代码!
1. 复制并重命名新启动类,修改内容
- 原启动类(用于开发调试)
@SpringBootApplication
public class TrainTicketApplication {
public static void main(String[] args) {
SpringApplication.run(TrainTicketApplication.class, args);
}
}
- 新启动类 (打war包部署tomcat做适配)
@SpringBootApplication
public class TrainTicketApplication_Tomcat extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(TrainTicketApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(TrainTicketApplication.class);
}
}
2 . pom文件设置启动类、打包方式改成war、排除内置tomcat,同样也需要复制一份pom文件,并重命名,修改文件内容
<packaging>war</packaging>
<properties>
<!-- 指定启动类 -->
<start-class>com.zhaoqing.trainticket.TrainTicketApplication_Tomcat</start-class>
</properties>
<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>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<!--打包的时候可以不用包进去,别的设施会提供。事实上该依赖理论上可以参与编译,测试,运行等周期。
相当于compile,但是打包阶段做了exclude操作-->
<scope>provided</scope>
</dependency>
<build>
<!-- 指定War包名称-->
<finalName>train-ticket</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
- 执行maven打包命令时加上 -f pom_xxx.xml命令(指定pom文件)
- 本地调试时打jar包的maven命令:
mvn clean package -Dmaven.test.skip=true
- 线上部署时打war包的maven命令:
mvn clean package -Dmaven.test.skip=true -f pom_tomcat.xml