SpringBoot打成war包,部署到Tomcat服务器

Easter79
• 阅读 744

前言

 SpringBoot默认达成jar包,默认使用内置的Tomcat。但考虑到项目需要打成war包部署到外部的Tomcat服务器中。把SpringBoot项目按照平常的web项目一样发布到tomcat容器下。

1、修改pom.xml文件将默认的jar(默认创建项目的时候没有packaging)方式改为war。

    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example.mybaties</groupId>
    <artifactId>springbootmybaties</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springbootmybaties</name>
    <description>Demo project for Spring Boot</description>
    <!--默认为jar方式-->
    <!--<packaging>jar</packaging>-->
    <!--改为war方式-->
    <packaging>war</packaging>

2、排除内置的Tomcat容器

1)第一种方式

       <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <!--排除内置的Tomcat容器-->
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

2)第二种方式

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>

3、继承org.springframework.boot.web.servlet.support.SpringBootServletInitializer,重写configure方法。

1)第一种方式,启动类继承SpringBootServletInitializer重写configure

package com.example.mybaties;

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 SpringbootmybatiesApplication extends SpringBootServletInitializer {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootmybatiesApplication.class, args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(SpringbootmybatiesApplication.class);
    }


}

2)新增加一个类继承SpringBootServletInitializer重写configure

package com.example.mybaties.config;

import com.example.mybaties.SpringbootmybatiesApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

/**
 * @author LST
 * @version 1.0
 * @Description:
 * @date 2020-1-17 16:19
 */
public class ServletInitializer extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        //此处的Application.class为带有@SpringBootApplication注解的启动类
        return builder.sources(SpringbootmybatiesApplication.class);
    }
}

4、为了防止应用上下文所导致的项目访问资源加载不到的问题,建议pom.xml文件中标签下添加标签

   <build>
        <!--上下文路径-->
        <finalName>mybaties</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

5、打成war包

先clean再打包:mvn clean package -Dmaven.test.skip=true,也可使用idea自带的打包

SpringBoot打成war包,部署到Tomcat服务器

6、将war包放入tomcat中,我使用的是tomcat8.

SpringBoot打成war包,部署到Tomcat服务器

7、进入tomcat的bin目录下启动项目

SpringBoot打成war包,部署到Tomcat服务器

SpringBoot打成war包,部署到Tomcat服务器

8、直接用浏览器访问我的接口(这个接口是get)http://127.0.0.1:8080/mybaties/user/0ac94d4eab22610c71af9a02bd4e296c,或者使用postman等测试工具。

SpringBoot打成war包,部署到Tomcat服务器

点赞
收藏
评论区
推荐文章
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Easter79 Easter79
3年前
springboot项目打成war包
在某种情况下,比如。。。。。。。。。。之下,我们不得不,将springboot打成war包1、在pom.xml文件中修改<packagingwar</packaging2、移除springboot自带的tomcat<!移除自带的tomcat<dependency<groupIdorg.spri
Easter79 Easter79
3年前
springboot部署到tomcat
把springboot项目按照平常的web项目一样发布到tomcat容器下多点经验:1.保证运行环境的jdk和开发环境一致,不然class文件无法被编译2.保证tomcat和java的版本匹配,不然tomcat无法启动3.集群一般会进行ip和域名的映射,如果tomcat服务器不在集群内,需要在所在服务器进行
SpringBoot内置tomcat启动过程及原理
SpringBoot是一个框架,一种全新的编程规范,他的产生简化了框架的使用,同时也提供了很多便捷的功能,比如内置tomcat就是其中一项,他让我们省去了搭建tomcat容器,生成war,部署,启动tomcat。因为内置了启动容器,应用程序可以直接通过Maven命令将项目编译成可执行的jar包,通过javajar命令直接启动,不需要再像以前一样,打包成War包,然后部署在Tomcat中。那么内置tomcat是如何实现的呢
Stella981 Stella981
3年前
Spring Boot中application.properties优先级顺序
application.properties,用来配置一些可以手动修改而且不用编译的变量,这样的作用在于,打成war包或者jar包用于生产环境时,我们可以手动修改环境变量而不用再重新编译。springboo默认已经配置了很多环境变量,例如,tomcat的默认端口是8080,项目的contextpath是“/”等等(更多请看https://docs.s
Wesley13 Wesley13
3年前
ubuntu 18.04 server下tomcat部署sprongboot项目
1springboot项目相关1.1修改pom.xml文件依赖如果要将最终的打包形式改为war的话,还需要对pom.xml文件进行修改,因为springbootstarterweb中包含内嵌的tomcat容器,所以直接部署在外部容器会冲突报
Stella981 Stella981
3年前
Dubbo Admin管理控制台
DubboAdmin管理控制台在dubbo发布包里,有个admin项目,!QQ鎴浘20180225162654.jpg(http://blog.java1234.com/static/userImages/20180225/1519566420480098025.jpg)我们可以把这个项目打成war包然后发布到tomcat运行;这
Stella981 Stella981
3年前
No bean named 'xxxxxxx' available
springboot项目发布上线后,报错:Nobeannamed'xxxxxxx'available因为我开发时pom用的jar,但上线发布war。解决方法:1、pom.xml<packagingwar</packaging将tomcat从boot中提出来,并将scope设置为provide<dependenc
Stella981 Stella981
3年前
SpringBoot打成war包,部署到Tomcat服务器
前言 SpringBoot默认达成jar包,默认使用内置的Tomcat。但考虑到项目需要打成war包部署到外部的Tomcat服务器中。把SpringBoot项目按照平常的web项目一样发布到tomcat容器下。1、修改pom.xml文件将默认的jar(默认创建项目的时候没有packaging)方式改为war。
Stella981 Stella981
3年前
Spring Boot打包war jar 部署tomcat
概述1.SpringBoot聚合工程打包war部署Tomcat2.SpringBoot打包Jar,通过Javajar直接运行.3.提供完整pom.xml测试项目至github4.项目目前了集成了SpringBootSpringdatajpaRedis集群dubbofreemarker 持续更新...
Easter79
Easter79
Lv1
今生可爱与温柔,每一样都不能少。
文章
2.8k
粉丝
5
获赞
1.2k