spring boot默认部署方式是jar包,但有时候可能运维使用的是tomcat之类的容器,并要求提交war包。本篇将介绍jar包和war通用的配置方式。
pom.xml
修改打包方式为war包
<packaging>war</packaging>
spring boot中已经集成了spring-boot-starter-tomcat内置容器,这里覆盖配置主要是为了设置provided,意思是打包的时候不要将它打进war包,因为我们要在外置的tomcat中运行。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
启动类
SpringBootServletInitializer提供了servlet支持,当tomcat容器启动时,它会自动配置当前项目。
@SpringBootApplication
public class Run extends SpringBootServletInitializer {
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Run.class);
}
public static void main(String[] args) throws Exception {
SpringApplication.run(Run.class, args);
}
}
生成war包
此时,执行mvn package打包命令时即会生成war包,可以放入tomcat中使用。对开发不会有任何影响,而且支持spring boot中的静态目录,如static等
兼容jar包
spring boot中习惯是用java -jar命令运行jar包的,而war包则不能这样。不过spring boot提供了一个打包插件
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
该插件可参考第14篇,用于生成可用java -jar命令执行的包。此时,打成的war包即可以放tomcat中使用,也可以直接以java -jar命令启动