搜尋
首頁Javajava教程SpringBoot怎麼打成war套件在tomcat或wildfly下運行

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中文網其他相關文章!

陳述
本文轉載於:亿速云。如有侵權,請聯絡admin@php.cn刪除
如何將Maven或Gradle用於高級Java項目管理,構建自動化和依賴性解決方案?如何將Maven或Gradle用於高級Java項目管理,構建自動化和依賴性解決方案?Mar 17, 2025 pm 05:46 PM

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

如何使用適當的版本控制和依賴項管理創建和使用自定義Java庫(JAR文件)?如何使用適當的版本控制和依賴項管理創建和使用自定義Java庫(JAR文件)?Mar 17, 2025 pm 05:45 PM

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

如何使用咖啡因或Guava Cache等庫在Java應用程序中實現多層緩存?如何使用咖啡因或Guava Cache等庫在Java應用程序中實現多層緩存?Mar 17, 2025 pm 05:44 PM

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

如何將JPA(Java持久性API)用於具有高級功能(例如緩存和懶惰加載)的對象相關映射?如何將JPA(Java持久性API)用於具有高級功能(例如緩存和懶惰加載)的對象相關映射?Mar 17, 2025 pm 05:43 PM

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

Java的類負載機制如何起作用,包括不同的類載荷及其委託模型?Java的類負載機制如何起作用,包括不同的類載荷及其委託模型?Mar 17, 2025 pm 05:35 PM

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

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

Safe Exam Browser

Safe Exam Browser

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

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

SublimeText3 英文版

SublimeText3 英文版

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

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器