Spring boot如何打war包发布到tomcat
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring boot如何打war包发布到tomcat相关的知识,希望对你有一定的参考价值。
前言:
平时在使用java做项目开发时,首先想到利用框架来提升开发效率,和提高可维护性。选择spring可以使用ssm(spring框架,springMVC,mybatis),而且企业中应用也比较广泛,然而还是发现,在框架中有很多配置,而且看起来相当繁琐,并且在这些配置中,大部分都属于默认配置,习惯配置。因此spring boot就此诞生,它的主要目的就是实现“0”配置,此处的“0”不是代表没有配置,而是代表极少的配置。并且spring boot还内置了tomcat。
Tomcat是一种web容器,类似于apache、nginx等,提供web服务的服务器软件。它属于轻量级,方便启动和配置的web服务器,非常适合用来学习之用。不过有时候也可以作为生产服务器来部署,通过搭建集群提高可用性和高负载性。上面说到spring boot内置了tomcat,就意味着spring boot项目可以自己运行(编写入口类,打为jar包,使用java -jar 包名.jar来运行)但是在有的情况下我们既需要发布软件的灵活性,又想使用spring boot为我们带来的便利,因此我们就需要将spring boot项目当做普通项目一样打成war包发布到tomcat,这正是本章编写的目的。
spring boot项目打war包发布的步骤(此处以maven做讲解):
1、构建spring应用(继承SpringBootServletInitializer并重写configure方法)
将入口文件做修改,代码如下:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
@SpringBootApplication
public class WebApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(WebApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(WebApplication.class);
}
}
2、配置pom.xml文件
A、先将打包类型做设置:
<packaging>jar</packaging>
改为:
<packaging>war</packaging>
B、其他配置如下
<!-- 继承spring boot -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<!-- 设置属性编码与版本-->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<!--设置打包时包的名称-->
<build>
<finalName>ROOT</finalName>
</build>
<!--配置依赖-->
<dependencies>
<!--java持久化API主要用于和数据库交互-->
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>persistence-api</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<!-- 移除嵌入式tomcat插件避免与发布后的环境冲突 -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<!--对数据库的支持-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!-- RabbitMQ -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<!--用于提供web服务(servlet容器)-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--引入thymeleaf模板引擎-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!--引入测试插件比如Junit-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>jquery</artifactId>
<version>3.3.0</version>
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>bootstrap</artifactId>
<version>3.3.7</version>
</dependency>
<!--引入全文检索-->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-solr</artifactId>
<version>2.1.1.RELEASE</version>
</dependency>
<!-- httpclient -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.3.5</version>
</dependency>
<!--自动重启或自动关闭缓存等功能于开发很有用-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
<!-- 数据库连接池 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.0.8</version>
</dependency>
<!--引入阿里巴巴连接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.9</version>
</dependency>
</dependencies>
最后使用右键项目:
Run As > maven clean(清除已打包的其他文件) > maven install(打包)
然后在target目录下便可以看到设置了<finalName>ROOT</finalName>的war包,
之后发布即可
以上是关于Spring boot如何打war包发布到tomcat的主要内容,如果未能解决你的问题,请参考以下文章
Spring boot + Gradle + Eclipse打war包发布总结