springboot預設的打包方式為jar包,jar包的有優點是不需要更改的配置,並且內嵌了tomcat,如果打成jar包直接可以丟到docker中運行測試。但考慮到前端程式碼只能打成war包,因此乾脆也將後端程式碼打成war包和前端的程式碼一起放在tomcat容器中的webapps中運行就好了。
SpringBoot打包形式
預設情況下,建立的SpringBoot專案是按照jar包形式來進行打包的。同時,內建了tomcat的容器。
那麼,此時如果想讓springboot打包成war包,部署到wildfly等容器,該如何處理?
以下將從創建專案開始逐一講解。
建立項目
建立專案沒有什麼難點,使用idea工具建立一個簡單的maven項目即可,如果你的專案已經是springboot項目,想要修改為war包形式,對照修改即可。
修改pom.xml配置
建立專案之後,修改pom.xml文件,新增parent標籤。
<parent> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-parent</artifactid> <version>2.1.5.RELEASE</version> <relativepath></relativepath> </parent>
如果原來是springboot項目,則已經包含了,不用修改。
pom.xml中設定打包方式為war。
<packaging>war</packaging>
新增或修改dependency配置,如下:
<dependencies> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter</artifactid> </dependency> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-web</artifactid> <exclusions> <exclusion> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-tomcat</artifactid> </exclusion> </exclusions> </dependency> <dependency> <groupid>javax.servlet</groupid> <artifactid>servlet-api</artifactid> <version>2.5</version> </dependency> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-test</artifactid> <scope>test</scope> </dependency> </dependencies>
其中在spring-boot-starter- web中需要排除tomcat的依賴。同時,加入servlet-api的依賴。注意這裡新增的依賴為Servlet2.5。
在build中使用以下插件進行打包。
<build> <plugins> <plugin> <groupid>org.apache.maven.plugins</groupid> <artifactid>maven-war-plugin</artifactid> <version>2.6</version> <configuration> <failonmissingwebxml>false</failonmissingwebxml> </configuration> </plugin> </plugins> </build>
啟動main方法
如果已經存在啟動的main方法,則讓main方法繼承SpringBootServletInitializer,並實作其方法即可。如果是新建立項目,則直接在頂級目錄建立SpringBootApp(啟動類別),然後啟動diam如下。
@SpringBootApplication public class SpringBootApp extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(SpringBootApp.class, args); } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(SpringBootApp.class); } }
打包
透過maven指令執行package打包即可,在target目錄下即可產生war包。
至於tomcat和wildfly的部署,都可將war套件放置於對應的目錄下啟動服務即可。
異常情況
如果在啟動時報如類似如下異常(提示缺少web.xml):
Error assembling WAR: webxml attribute is required (or pre-existing WEB-INF/web.xml if executing in update mode)
注意檢查pom檔案打包插件和是否排除了tomcat的問題,核查上面的打包插件是否正確。
問題的原因是:springboot專案中引用了依賴套件spring-boot-starter-web。此套件中所引用的spring-boot-starter-tomcat包含了tomcat嵌入式servlet容器,其不同版本實作的是不同的servlet版本規格。
Servlet/JSP版本2.5/2.1支援Tomcat的版本為6.0.x,最低java版本為1.5。 Servlet/JSP版本3.0/2.2支援Tomcat的版本為7.0.x,最低java版本為1.6。
由於上面使用了Servlet2.5,當沒有web.xml檔案時會出現上面的例外。
解決方式一:當Servlet版本小於3時,使用建立/src/main/webapp/WEB-INF/web.xml檔案。
解決方式二:在pom.xml的build下新增maven-war-plugin外掛程式。並設定failOnMissingWebXml為false。
以上是SpringBoot怎麼打成war套件在tomcat或wildfly下運行的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本文討論了使用Maven和Gradle進行Java項目管理,構建自動化和依賴性解決方案,以比較其方法和優化策略。

本文使用Maven和Gradle之類的工具討論了具有適當的版本控制和依賴關係管理的自定義Java庫(JAR文件)的創建和使用。

本文討論了使用咖啡因和Guava緩存在Java中實施多層緩存以提高應用程序性能。它涵蓋設置,集成和績效優勢,以及配置和驅逐政策管理最佳PRA

本文討論了使用JPA進行對象相關映射,並具有高級功能,例如緩存和懶惰加載。它涵蓋了設置,實體映射和優化性能的最佳實踐,同時突出潛在的陷阱。[159個字符]

Java的類上載涉及使用帶有引導,擴展程序和應用程序類負載器的分層系統加載,鏈接和初始化類。父代授權模型確保首先加載核心類別,從而影響自定義類LOA


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

禪工作室 13.0.1
強大的PHP整合開發環境

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

記事本++7.3.1
好用且免費的程式碼編輯器