SpringBoot打包为war包,并在tomcat中运行

先看一下我创建的最简单的项目吧。

  • controller类
@RestController
public class TestController {
    @RequestMapping("index")
    public String index() {
        return "hello";
    }
}
  • pom文件没有做任何修改,我们直接启动这个项目,注意看启动的日志中有关嵌入式tomcat的版本的

我这里的版本是8.5.37,这个是由你选用的springboot的版本定的,我选用的springboot是2.0.8版本的。好了,我们就直接访问项目了,访问成功

好了,我们刚才是直接在idea中启动了这个类,当然就可以打包成jar包启动了,就不演示了,直接开始打包为war包

1. 修改pom文件,因为springboot使用的内嵌式的tomcat,所以我们做如下操作

<!-- 将打包方式改为war包-->
    <packaging>war</packaging> 

<!--排除骨嵌式tomcat,修改第一个依赖-->
        <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>

        <!-- 我们移除了嵌入式的tomcat,就要添加对应的tomcat依赖包 -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>

好了,pom.xml算是改完了,这时候,我们在idea中直接启动SpringBootApplication.java时会报以下错误

2.新建一个启动类,tomcat是找不到springboot的启动类的,我们要新建一个类指向它,这个类要继承SpringBootServletInitializer类,并重写 configure 方法

在我们springboot启动类的同一个下创建一个类

/**
 * 修改启动类,继承 SpringBootServletInitializer 并重写 configure 方法
 */
public class SpringBootStartApplication extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        // 注意这里要指向原先用main方法执行的Application启动类
      return builder.sources(SpringbootWardemoApplication.class);
    }
}

通过以上两步,已经完成了由jar包转为war的过程。

因为打包方式为war包,所有启动这个类也就报错了,同样,也不能打包为jar包了。那么我们就在idea中配置tomcat启动方式,tomcat的版本要和之前这个嵌入式的一样(理论上只要大版本上相同就好了,同为tomcat8.5)。更多的tomcat版本下载,见tomcat各个版本下载
在idea配置tomcat启动时可能有个小插曲,就是找不到对应的war包,你可以先使用maven打包一次,或者点击下这里

我们在idea中用tomcat方式启动后,没有问题了。

### 最后,我们用maven打包,然后放在我们的tomcat中启动就可以了

  • 注意以下几点 :

    1.之前在springboot中一些配置不生效,最明显的就是对端口的配置

    2.如何修改之前的springboot项目的版本,只要在pom.xml中最开始的地方修改就可以了

      <parent>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-parent</artifactId>
          <version>2.0.8.RELEASE</version>
          <relativePath/>
      </parent>

    3.如何查看自己sprinboot中对应的嵌入式的tomcat的版本

原文地址:https://www.cnblogs.com/Lyn4ever/p/11667978.html

时间: 2024-11-07 19:59:28

SpringBoot打包为war包,并在tomcat中运行的相关文章

SpringBoot之打成war包部署到Tomcat

正常情况下SpringBoot项目是以jar包的形式,正常情况下SpringBoot项目是以jar包的形式,并且SpringBoot是内嵌Tomcat服务器,所以每次重新启动都是用的新的Tomcat服务器.正因如此,也出现了一个问题:    上传到项目的文件,如果是保存在项目中的,那么重启过后文件就会丢失.比如我们上传了一个头像,重启项目后,这个头像就没了.而如果将文件保存在本地磁盘中的话,html中标签没办法获取(当然,企业项目中一般是有专门的图片服务器的).因此,我们才需要将SpringBo

Spring Boot:项目打包成war并发布到Tomcat上运行

一.修改pom文件 1. 因为SpringBoot中嵌入的有Tomcat,因此要移除嵌入式的Tomcat插件 1 <dependency> 2 <groupId>org.springframework.boot</groupId> 3 <artifactId>spring-boot-starter-web</artifactId> 4 <!-- 移除嵌入式Tomcat --> 5 <exclusions> 6 <ex

Apache Ant学习总结(二):使用Ant自动编译JavaWeb项目并打成war包发布到Tomcat中

前言:如题所示,有时我们可能经常需要把JavaWeb项目进行编译,然后打包成war包并发布到Tomacat中进行测试.如果每次都人工进行操作的话,无疑是很麻烦的.这时我们可以通过编写一个自动化的Ant脚本,每次需要发布项目时只需要点击一下就可以完成了,非常方便 测试项目的项目结构如下: Ant脚本build_war.xml: <?xml version="1.0" encoding="UTF-8"?> <project name="ant

springboot打包成war,部署到tomcat无法访问的问题

如题:实在是太坑.平时本地测试觉得很方便,但是到了项目打包发布掉链子了. 如很多帖子一样: 首先springboot内嵌的tomcat,再依赖servlet-api,修改启动类继承SpringBootServletInitializer,打成war放入tomcat中 一.pom.xml删掉内嵌tomcat ` <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring

maven项目打包成war包发布到tomcat下...

分为两种情况: 1.当你的项目中没有前端页面时,直接右键项目--Export--选择web下的warFile--选择目录到tomcat安装目录下的webapps下即可访问. 2.当项目中有前端页面时 (1).右键项目--run as--选择maven build--输入clean package--点run直接运行,如下图 出现如下图所示则打包成功 在项目的保存路径下找到target文件下,再找到---.jar包,然后复制到tomcat下的webapps下,然后找到tomcat的bin目录下,运

将Web项目War包部署到Tomcat服务器基本步骤(完整版)

1. 常识: 1.1 War包 War包一般是在进行Web开发时,通常是一个网站Project下的所有源码的集合,里面包含前台HTML/CSS/JS的代码,也包含Java的代码. 当开发人员在自己的开发机器上调试所有代码并通过后,为了交给测试人员测试和未来进行产品发布,都需要将开发人员的源码打包成War进行发布. War包可以放在Tomcat下的webapps或者word目录下,随着tomcat服务器的启动,它可以自动被解压. 1.2 Tomcat服务器 Tomcat服务器是一个免费的开放源代码

将Web项目War包部署到Tomcat服务器基本步骤

参考来源: http://www.cnblogs.com/pannysp/archive/2012/03/07/2383364.html   1. 常识: 1.1 War包 War包一般是在进行Web开发时,通常是一个网站Project下的所有源码的集合,里面包含前台HTML/CSS/JS的代码,也包含Java的代码. 当开发人员在自己的开发机器上调试所有代码并通过后,为了交给测试人员测试和未来进行产品发布,都需要将开发人员的源码打包成War进行发布. War包可以放在Tomcat下的webap

Spring boot如何打war包发布到tomcat

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

(转)用 Maven 部署 war 包到远程 Tomcat 服务器

转自蒋国纲 www.cnblogs.com/guogangj/p/5505228.html 用Maven部署war包到远程Tomcat服务器 过去我们发布一个Java Web程序通常的做法就是把它打成一个war包,然后用SSH这样的工具把它上传到服务器,并放到相应的目录里,让Tomcat自动去解包,完成部署. 很显然,这样做不够方便,且我们在用SSH把文件拽上去的时候很可能会搞错.(当然了大厂就不会有这样的问题,因为人家有运维团队专门来干这个事情,哈哈) 现在我要的是:一行命令部署到本地服务器,