介绍:
springboot的打包方式基本分:war包和jar包,也有直接提交到github,通过jekins进行打包部署的。
jar包是服务化的概念,后续接触springcloud,所有的服务打包都是以jar的形式存在,也就是说适合前后端分离的项目部署。war包是应用程序的概念,也可以向外提供服务和接口,适合前后端不分离的项目部署。这里主要介绍如何打成war包。
流程
1.修改打包方式
这种情况下,需要将pom中的packaging改成war方式。
<packaging>warpackaging>
2.移除嵌入式tomcat插件
方式一:在pom.xml里找到spring-boot-starter-web依赖节点,在其中添加如下代码
<dependency> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-starter-webartifactId> <exclusions> <exclusion> <artifactId>spring-boot-starter-tomcatartifactId> <groupId>org.springframework.bootgroupId> exclusion> exclusions>dependency>
3、添加servlet依赖
<dependency> <groupId>javax.servletgroupId> <artifactId>javax.servlet-apiartifactId> <scope>providedscope>dependency>
4、增加war的启动类,放在与项目Application同级目录
// 打包war [4] 增加war的启动类public class WarStarterApplication extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { // 指向Application这个springboot启动类 return builder.sources(Application.class); }}
当然两个类也可以写成一个,在启动类里重写configure方法也可
public class Application extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(Application .class, args); } //重写configure方法,否则在部署到tomcat时,接口将访问不到 @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(Application.class); }}
5、通过maven打包即可
war包的位置如下图,可将包名重命名为项目名,然后进行部署