1. 程式人生 > >如何將一個SpringBoot簡便地打成一個war包(親測有效)

如何將一個SpringBoot簡便地打成一個war包(親測有效)

為什麼要把SpringBoot打成war包

正常情況下SpringBoot專案是以jar包的形式,通過命令列:

java -jar demo.jar

來執行的,並且SpringBoot是內嵌Tomcat伺服器,所以每次重新啟動都是用的新的Tomcat伺服器。正因如此,也出現了一個問題:
上傳到專案的檔案,如果是儲存在專案中的,那麼重啟過後檔案就會丟失。比如我們上傳了一個頭像,重啟專案後,這個頭像就沒了。而如果將檔案儲存在本地磁碟中的話,html中標籤沒辦法獲取。因此,我們才需要將SpringBoot專案打成war包,放到Tomcat中去執行。

修改方法

在pom.xml檔案中新增下面的依賴:

 <!--因配置外部TOMCAT 而配置-->
<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>

同時,將pom.xml檔案首部的jar改成war

    <groupId
>
com.star</groupId> <artifactId>yiyong</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <!--<packaging>jar</packaging>-->

最後,將啟動類從

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

修改為

@SpringBootApplication
public class YiyongApplication extends SpringBootServletInitializer{
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(YiyongApplication.class);
    }


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

注意:該類繼承了SpringBootServletInitializer並且重寫了configure方法,這是關鍵所在。

打包部署

在IDEA右側Maven欄雙擊package等待Build Success即可。
這裡寫圖片描述
然後把target目錄下的war包放到tomcat的webapps目錄下,啟動tomcat,即可自動解壓部署。
最後在瀏覽器中輸入

http://localhost:[埠號]/[打包專案名]/

釋出成功