Spring Boot 支持发布jar包和war包,它推荐的是使用jar形式发布
使用jar包比较方便,但如果是频繁修改更新的项目,需要打补丁包,那这么大的jar包上传都是问题
jar包不一定合适适用所有的场景,如war包更合适,可以尝试转为传统的war包,这样打补丁包可能更方便
1.修改Spring Boot启动类:启动类继承 SpringBootServletInitializer
类,并覆盖 configure
方法
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
public static void main(String[] args) throws Exception {
SpringApplication.run(Application.class, args);
}
}
2.修改jar为war包
#在pom中添加war包配置
<packaging>war</packaging>
3.去除Spring Boot内置Tomcat
<dependencies>
<!--修改自带tomcat依赖范围为provided,防止与外部tomcat发生冲突-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
4.添加war包打包插件
如果用的是继承spring-boot-starter-parent的形式使用Spring Boot,那可以跳过,因为它已经配置好了
如果使用的依赖spring-boot-dependencies形式,需要添加以下插件
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<!--failOnMissingWebXml需要开启为false,不然打包会报没有web.xml错误-->
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
5.打war包
在Maven中使用 mvn cleanpackage
命令打包
在Idea中打包
jar包转war包影响
1.application配置文件中的server.xx等关于容器的配置就无效了,改配置需要在外部tomcat中进行
2.Spring Boot的升级是否需要Tomcat跟着升级
3、打war包比打jar明显要变慢好多