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版本的。好了,我們就直接訪問項目了,訪問成功

file

好了,我們剛才是直接在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時會報以下錯誤
file

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打包一次,或者點擊下這里
file

我們在idea中用tomcat方式啟動后,沒有問題了。

file

最后,我們用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/11667967.html)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM