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

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

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

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

file

好了,咱们刚才是直接在idea中启动了这个类,固然就能够打包成jar包启动了,就不演示了,直接开始打包为war包java

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时会报如下错误 fileweb

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

在咱们springboot启动类的同一个下建立一个类spring

/**
 * 修改启动类,继承 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打包一次,或者点击下这里 fileapache

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

file

最后,咱们用maven打包,而后放在咱们的tomcat中启动就能够了

  • 注意如下几点 :tomcat

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

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

<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/11667967.html)
相关文章
相关标签/搜索