文章目录
7. 项目构建与部署
SpringBoot可以内嵌Servlet容器,因此部署极为方便,可直接打包成可执行Jar包部署在Java允许环境的服务器上,也可以打包成War包并部署在外部Tomcat服务器上等。
7.1 Jar部署
SpringBoot打包成Jar包一般使用spring-boot-maven-plugin这个插件,该插件在创建Spring Boot Web项目时自动会在pom.xml文件中生成:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
当配置了该插件后就可以创建一个可执行的Jar文件。这在很大程度上简化了应用的部署,只需安装了JRE就可以允许。不过前提是应用程序的parent为spring-boot-starter-parent。
配置完成后Maven Project中双击执行clean,当clean执行完毕后,再执行install,如下所示:
执行完毕后,会发现在项目的根目录的target目录下有刚刚打包好的jar包。接着进入target目录下执行如下命令即可启动项目:
或者把这个jar放在任意盘符中,按住shift+鼠标右键进行Power Shell输入命令启动项目。
7.2 War部署
SpringBoot默认打包成Jar包,使用SpringBoot构造Web应用,默认使用内置Tomcat。但考虑到项目需要集群部署或者进行优化,就需要打包成War包部署到外部的Tomcat服务器中。
-
修改打包方式
修改pom.xml文件将默认的Jar方式改为War方式:
<packaging>war</packaging>
-
排除内置的Tomcat容器
在pom.xml文件中移除Tomcat:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency>
-
添加servlet-api依赖
在pom.xml文件中添加servlet-api依赖:
<dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency>
-
修改启动类
启动类继承SpringBootServletInitializer并重写configure方法:
package com.shenziyi.spring_security; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; public class WarInitializer extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder){ //注意这里要指向原先main方法执行的Application启动类 return builder.sources(SpringSecurityApplication.class); } }
-
打包部署
打包War包的方式和打包Jar包的方式一样都是在Maven Project中双击执行clean,当clean执行完毕后,再执行install。然后把target目录下的War包放到Tomcat的webapps目录下,启动Tomcat,即可自动解压部署。最后在浏览器中就可以访问该打包项目。
注意:使用外部Tomcat部署访问时,application。properties(或者application.yml)中的配置将失效,请使用外置Tomcat的端口和webapps目录下的项目名进行访问。