vlambda博客
学习文章列表

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