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