Spring Boot应用的打包和部署
传统的Web应用在发布之前通常会打成WAR包,然后将WAR包部署到Tomcat等容器中使用,而通过前面的学习我们已经知道,Spring Boot应用既能以JAR包的形式部署,又能以WAR包的形式部署。
JAR包
打包方式是JAR,在idea中只需要执行Maven的package命令就可以将项目打成一个JAR包
JAR包复制到系统D盘,并使用压缩软件打开。我们可以在其lib文件夹中发现很多JAR包,实际上这些JAR包就是项目所依赖的JAR包,其中还包括了Tomcat的JAR包
由于在项目JAR包中已经包含了Tomcat,所以我们不需要另外部署Tomcat就可以在命令行中将项目启动起来。
在命令提示符窗口中进入JAR包所在目录(D盘),并通过如下命令来执行JAR包:
java -jar springboot-0.0.1-SNAPSHOT.jar
WAR包
虽然通过Spring Boot内嵌的Tomcat可以直接运行所打的JAR包,但是有时候我们也会希望通过外部的Tomcat来管理多个项目。由于JAR包在Tomcat中是无法运行的,所以我们需要将项目打成WAR包的形式。
要想将项目打成WAR包,并可以在Tomcat中运行,需要执行以下两个步骤。
1. 修改打包方式,并添加Tomcat依赖
将项目pom.xml中<packaging>元素内的jar修改为war,并在文件中添加Tomcat的依赖配置。其修改和添加的配置信息如下:
<packaging>war</packaging>
...
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
上述配置代码中,spring-boot-starter-tomcat是Spring Boot自带的Tomcat依赖,默认会被打到项目的lib包中。当我们将其依赖范围设置为provided时,将产生一个可执行的WAR包,在包中的lib-provided目录会有provided依赖。这样不仅可以部署到Servlet容器启动项目,还可以通过命令行执行java-jar命令来运行此应用。
2. 创建SpringBootServletInitializer子类,并覆盖其配置方法
要产生一个可部署的war包,还需要提供一个SpringBootServletInitializer子类,并覆盖它的configure()方法。通常我们可以采用两种方式:一是把应用的主类(引导类)修改为继承SpringBootServletInitializer的类,并覆盖configure()方法;二是创建一个继承了SpringBootServletInitializer的类,并覆盖configure()方法。以创建SpringBootServletInitializer子类的方式为例,其子类实现代码如文件3-11所示。
文件3-11 ServletInitializer.java
package com.xc.springboot; import javafx.application.Application;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.support.SpringBootServletInitializer; public class ServletInitializer extends SpringBootServletInitializer { protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
}
完成这两步后,即可通过package命令将项目打成WAR包,然后将WAR包部署到Tomcat中启动。
Spring Boot应用的打包和部署的更多相关文章
- Spring Boot项目的打包和部署
补充一点:搜索了下别人Spring Boot部署方案,大多都说:①packaging设为war:②要添加Spring Boot的tomcat依赖:③修改output路径,但是使用STS新建Spring ...
- Spring Boot(十二):spring boot如何测试打包部署
Spring Boot(十二):spring boot如何测试打包部署 一.开发阶段 1,单元测试 在开发阶段的时候最重要的是单元测试了,springboot对单元测试的支持已经很完善了. (1)在p ...
- Spring Boot使用Maven打包替换资源文件占位符
在Spring Boot开发中,通过Maven构建项目依赖是一件比较舒心的事,可以为我们省去处理冲突等大部分问题,将更多的精力用于业务功能上.近期在项目中,由于项目集成了其他外部系统资源文件,需要根据 ...
- 居然仅用浏览器,就完成了Spring Boot应用的开发与部署!
最近有幸试用了一下阿里云的一个新产品:云开发平台,体验一把全新的开发模式!虽然中间也碰到了一些问题,但整体的体验透露着未来感,因为整个过程都不需要使用我们最常用的IDEA,仅依靠浏览器就把一个Spri ...
- spring boot项目Intellij 打包
spring boot项目Intellij 打包 学习了:http://blog.csdn.net/hzt_fighting_up/article/details/78174291 在edit con ...
- Spring boot(4)-应用打包部署
1.Spring Boot内置web spring Boot 其默认是集成web容器的,启动方式由像普通Java程序一样,main函数入口启动.其内置Tomcat容器或Jetty容器,具体由配置来决定 ...
- (转)Spring Boot(十二):Spring Boot 如何测试打包部署
http://www.ityouknow.com/springboot/2017/05/09/spring-boot-deploy.html 有很多网友会时不时的问我, Spring Boot 项目如 ...
- spring boot(十二)打包部署
有很多网友会时不时的问我,spring boot项目如何测试,如何部署,在生产中有什么好的部署方案吗?这篇文章就来介绍一下spring boot 如何开发.调试.打包到最后的投产上线. 开发阶段 单元 ...
- Spring Boot(十二):Spring Boot 如何测试打包部署
有很多网友会时不时的问我, Spring Boot 项目如何测试,如何部署,在生产中有什么好的部署方案吗?这篇文章就来介绍一下 Spring Boot 如何开发.调试.打包到最后的投产上线. 开发阶段 ...
随机推荐
- Nginx一个server配置多个location(使用alias)
公司测试环境使用nginx部署多个前端项目.网上查到了两个办法: 在配置文件中增加多个location,每个location对应一个项目比如使用80端口,location / 访问官网: locati ...
- Homebrew 更新慢问题
cd "$(brew --repo)" git remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/hom ...
- Tensorflow 细节P-40
1.绝大部分时候都会忽略graph的使用,如下代码所示,学会怎样tf.get_default_graph()是重要的,此外注意变量定义时的初始化必须加 initializer 2.此外,要知道 wri ...
- CentOS 7.5静默安装oracle 11g
1.安装前环境准备 1.1.配置本地yum源 #因公司内网环境,没有互联网,所以需要配置本地yum源,安装所需依赖包等. #挂载ios镜像centos7.5-1804 [root@oracle ~]# ...
- Linux LVM--三种Logic Volume
本文链接:https://blog.csdn.net/u012299594/article/details/84551722 概述 为了满足在性能和冗余等方面的需求,LVM支持了下面三种Logic V ...
- iframe标签在PC端的使用
随着前端框架的崛起 各种组件化 模块化开发 然而我发现在PC端要考虑兼容 ~~~~ 自己琢磨着 在PC端怎么吧一个页面做成一个公共的部分 发现有个iframe标签可以在页面中嵌套 虽然iframe可 ...
- Zabbix 邮件报警示例
Zabbix 邮件报警示例: 1.编辑 mail.rc 文件添加默认的邮箱配置 # vi /etc/mail.rc set from=1234567@qq.com set smtp=smtp.qq. ...
- input file标签限制上传文件类型
用 input 的file类型标签上传文件,有时需要限制上传文件类型,添加accept属性可以实现 <input type="file" accept="image ...
- thymeleaf错误解决办法
Caused by: org.attoparser.ParseException: Exception evaluating SpringEL expression: "username&q ...
- RabbitMQ入门学习系列(二),单生产者消费者
友情提示 我对我的文章负责,发现好多网上的文章 没有实践,都发出来的,让人走很多弯路,如果你在我的文章中遇到无法实现,或者无法走通的问题.可以直接在公众号<爱码农爱生活 >留言.必定会再次 ...