1. 程式人生 > >SpringBoot系列——jar包與war包的部署

SpringBoot系列——jar包與war包的部署

  前言

  Spring Boot支援傳統部署和更現代的部署形式。jar跟war都支援,這裡參考springboot參考手冊學習記錄

  兩種方式

  jar

  springboot專案支援建立可執行Jar,參考手冊第11.5. Creating an Executable Jar就有對這樣的介紹,我這裡充當一回搬運工(大家好,我是大自然勤勞的搬運工~~):

  我們通過建立一個完全自包含的可執行jar檔案來完成我們的示例,該檔案可以在生產環境中執行。可執行jar(有時稱為“胖jar”)是包含編譯類和程式碼需要執行的所有jar依賴項的歸檔檔案

  要建立一個可執行jar,我們需要將spring-boot-maven-plugin新增到我們的pom.xml中。為此,在dependencies部分下面插入以下幾行:

    <!--構建工具-->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
</build>

  可以使用命令列來打包,或者使用Maven Projects來打包

  打包成功,在target目錄下就會看到jar包

  要執行該應用程式,cmd命令,進入到jar所在路徑檔案,使用 java -jar 命令;win下直接雙擊用java方式開啟即可執行(Ctrl+C退出)

 

   war

  springboot專案支援建立一個可部署的War檔案,參考手冊第92.1 Create a Deployable War File就有對這樣的介紹,我這裡充當一回搬運工(大家好,我是大自然勤勞的搬運工~~):

  由於Spring WebFlux並不嚴格依賴於Servlet API,並且應用程式預設部署在嵌入式反應器Netty伺服器上,所以WebFlux應用程式不支援War部署。

  生成可部署war檔案的第一步是提供SpringBootServletInitializer子類並覆蓋其配置方法。這樣做可以利用Spring Framework的Servlet 3.0支援,讓您在Servlet容器啟動應用程式時配置它。通常,您應該更新應用程式的主類以擴充套件SpringBootServletInitializer,如下例所示:

@SpringBootApplication
public class MyspringbootApplication  extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(MyspringbootApplication.class);
    }

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

 

  在建立springboot專案時,預設是jar包,如果是想要打成war包,需要修改pom.xml,<build>節點中增加<finalName>springboot</finalName>,打包方式跟生成路徑跟jar的一樣,這個過程的最後一步是確保嵌入的servlet容器不會干擾部署war檔案的servlet容器。為此,需要將嵌入式servlet容器依賴項標記為所提供的。

<!--預設jar-->
<packaging>war</packaging>

<!--構建工具-->
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
    <!--設定war名-->
    <finalName>springboot</finalName>
</build>

 

  得到war包後把它丟到服務容器裡run起來就行了,要注意的是使用了外部容器,要記得改Tomcat的埠,在server.xml的Connector節點

 

  結束語

  打成war包丟到伺服器裡面執行啟動報錯,還不知道是什麼問題,都是照著參考手冊來的...,先記錄到這裡;推薦直接使用jar的方式執行,war報錯的原因,有空再去研究。