Spring Boot是支持发布jar包和war的,但它推荐的是使用jar形式发布。使用jar包比较方便,但如果是频繁修改更新的项目,需要打补丁包,那这么大的jar包上传都是问题。所以,jar包不一定合适适用所有的场景,如war包更合适,你可以尝试转为传统的war包,这样打补丁包可能更方便。

如何配置打war包呢?

以下配置以Maven为说明讲解,Gradle的查看类似配置。

1、修改Spring Boot启动类

启动类继承SpringBootServletInitializer类,并覆盖configure方法。

下面是Spring Boot提供的示例代码。

@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>

如果不添加,默认为jar包。

3、去除Spring Boot内置Tomcat

修改自带tomcat依赖范围为provided,防止与外部tomcat发生冲突。

<dependencies>
<!-- … -->
<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</failOnMissingWebXml>
</configuration>
</plugin>

failOnMissingWebXml需要开启为false,不然打包会报没有web.xml错误。

如何打war包?

打war包方式和打jar包方式一样,没有区别。

  • 在Maven中使用mvn clean package命令即可打包。

  • 在Idea中可以这样设置打包:

改在war包后,发现打war包比打jar要上好多。

jar包转war包有什么影响?

1、application配置文件中的server.xx等关于容器的配置就无效了,改配置需要在外部tomcat中进行。

2、Spring Boot的升级是否需要Tomcat跟着升级?需要观察。

3、打war包比打jar明显要变慢好多。。

暂时还没遇到其他问题,大家对此有什么看法都可以在下方留言。

最新文章

  1. 浅谈JavaScript中的defer,async
  2. ul、li分列显示
  3. 为什么心跳包(HeartBeat)是必须的?
  4. 转载:有关SQL server connection Keep Alive 的FAQ(3)
  5. 20145207 《Java程序设计》第5周学习总结
  6. Entity Framework Lambda 实现多列Group by,并汇总求和
  7. tomcat gc问题总结
  8. 在virtualenv中安装libxml2和libxslt
  9. achartengine andorid图像引擎入门
  10. 安卓中onBackPressed ()方法的使用
  11. 基于Qt下移动平台第三方接入-ShareSDK(新浪微博,微信朋友圈等分享登录)
  12. 【转】14个最佳的HTML/CSS设计和开发框架
  13. Sql Server 2008 数据库18456错误怎么解决?
  14. EasyUI - DataGrid 去右边空白滚动条列
  15. layui:根据行内某个值,设定该行得背景色
  16. Scrapy 设置请求头
  17. android 设置为系统应用
  18. 多线程二:线程池(ThreadPool)
  19. jenkins 项目发布脚本
  20. doPost方法不支持 a 标签和地址栏直接输入地址访问

热门文章

  1. 联想电脑t450,t460p,t470等安装好ubuntu后启动找不到系统
  2. VueJs学习笔记
  3. DRF的解析器和渲染器
  4. 如何配置Java环境变量[转]
  5. flask 未完待续
  6. Hello SIP Protocol
  7. linux虚拟机配置上网(静态IP)和配置tomcat服务环境
  8. ef core中使用code first
  9. java多线程系列11 juc包下的队列
  10. JQUERY-定义-查找