通过前面几篇文章,我们已经可以创建Restful的服务。下来我们就要对服务打包部署,并且及时监控服务的运行情况。本节内容一起来学习一下打包部署。
一、打包
在项目创建时,我们可以根据实际项目需要选择打包方式为jar包,还是war包。
<groupId>com.aicode.bgms</groupId>
<artifactId>aicode-bgms</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
1、使用命令行打包
在命令行进入到项目的pom.xml文件所在目录,然后运行如下命令:
mvn package
运行完成后,即可以看到新生成了target目录。打包的成功的包文件。
如图所示:
2、使用IDE工具打包
使用intellij Idea打包直接运行maven下生命周期的package即可。
如果使用Eclipse进行打包的话,可以右键点击项目或项目的pom.xml文件,然后Run As——〉Maven Build,弹出如下对话框。
将Goals设置为compile,然后点击Run,这样IDE就会根据pom.xml的配置对项目进行编译。然后再次右键点击pom.xml,选择菜单Run As——〉Maven install。这样项目就会进行打包。打包完成后,在项目目录中的target下也会找到打包成功的jar文件或war文件。
二、部署
第一步,我们将项目进行了打包,下面对项目进行部署。
1、使用命令进行部署
将项目拷贝到要部署的服务器指定目录下。
运行如下命令:
java -jar aicode-bgms-0.0.1-SNAPSHOT.jar
或
java -jar aicode-bgms-0.0.1-SNAPSHOT.war
即可启动项目。
这里会使用项目内嵌的服务器(根据项目设置),如:Jetty或Tomcat进行部署。
2、使用Tomcat进行部署
如果创建项目时指定的打包方式为war的话,IDE会生成一个ServletInitializer.java文件,内容如下:
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
public class ServletInitializer extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(AicodeBgmsApplication.class);
}
}
这样在项目部署后,Web容器就能够得到Spring Boot的启动文件信息,进而初始化相关内容,这样就可以启用Spring Boot的应用了。
打包后,把项目的jar包或war包文件复制到tomcat的webapp目录下,然后启动tomcat即可。
3、热部署
热部署,顾名思义,就是在应用在启动状态时对其进行升级更新,但不需要重新启动应用。
导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<!--为true表示不会传递依赖-->
<optional>true</optional>
</dependency>
然后重新启动应用,这样当修改应用中的文件时,即可实现热部署。Spring Boot是通过LiveReload的支持实现热部署的。
下面是热部署相关的配置项:
#热部署相关配置start
#DEVTOOLS
#是否启用一个livereload.com兼容的服务器
spring.devtools.livereload.enabled=true
#服务器端口
spring.devtools.livereload.port=35729
#是否启用自动重启功能
spring.devtools.restart.enabled=true
#不重启服务的文件目录配置
spring.devtools.restart.eclude=resources/**,static/**,templates/**
#设置对路径变化进行监测的时间间隔(ms)
spring.devtools.restart.poll-interval=100
#在没有改变任何classpath的情况下,在重启被触发前的静默时长(ms)
spring.devtools.restart.quiet-period=400
#热部署相关配置end