亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SpringBoot怎么打成war包在tomcat或wildfly下運行

發布時間:2022-04-07 13:57:26 來源:億速云 閱讀:245 作者:iii 欄目:編程語言

本篇內容主要講解“SpringBoot怎么打成war包在tomcat或wildfly下運行”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“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/>
</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下運行”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乐陵市| 桐柏县| 个旧市| 金川县| 高安市| 凤庆县| 同江市| 临安市| 阿鲁科尔沁旗| 敖汉旗| 乐都县| 偃师市| 县级市| 嘉祥县| 普洱| 南昌县| 边坝县| 辽源市| 靖江市| 白玉县| 宾川县| 江华| 棋牌| 万荣县| 牙克石市| 德兴市| 内乡县| 平和县| 高淳县| 丽水市| 东光县| 晋宁县| 大埔县| 庆安县| 通道| 宁远县| 庄河市| 中超| 天等县| 凌源市| 通海县|