Spring boot如何打war包发布到tomcat

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring boot如何打war包发布到tomcat相关的知识,希望对你有一定的参考价值。

前言: 

平时在使用java做项目开发时,首先想到利用框架来提升开发效率,和提高可维护性。选择spring可以使用ssmspring框架,springMVC,mybatis),而且企业中应用也比较广泛,然而还是发现,在框架中有很多配置,而且看起来相当繁琐,并且在这些配置中,大部分都属于默认配置,习惯配置。因此spring boot就此诞生,它的主要目的就是实现“0”配置,此处的“0”不是代表没有配置,而是代表极少的配置。并且spring boot还内置了tomcat

 

Tomcat是一种web容器,类似于apachenginx等,提供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 打war包部署,打jar包

Spring Boot(25)——打war包

Spring boot + Gradle + Eclipse打war包发布总结

spring boot 打war包

Spring Boot 打war包并利用docBase指定根目录为打包的工程

Springboot打war包