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報錯的原因,有空再去研究。