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包的位置如下图,可将包名重命名为项目名,然后进行部署
