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)
相關文章
相關標籤/搜索