SpringBoot項目以war包方式部署到Tomcat中

爲什麼要以war包方式發佈項目?
springboot雖然內嵌tomcat,以java -jar運行也比較方便,但是該項目時單節點應用,用來開發測試比較好用;當需要部署多個節點應用時(即分佈式集羣部署),就需要用到war方式。

打包步驟

  • packaging需要改爲war,build組件也不可少
    pom.xml的配置摘要如下:
 <!-- 修改爲war-->
<packaging>war</packaging>
 <!-- 打包組件-->
<build>
    <finalName>${project.artifactId}</finalName>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>

在這裏插入圖片描述

  • 移除內嵌Tomcat,將spring-boot-starter-web中的Tomcat排除(即maven中的exclusions),並添加servlet-api的依賴
    pom.xml的配置摘要如下:
<!--exclusions 爲war包方式發佈時,排除內嵌的tomcat,如果是jar包方式發佈,需把exclusions註釋掉-->
    <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>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>provided</scope>
    </dependency>

在這裏插入圖片描述

  • 修改SpringBoot啓動類
    需要繼承SpringBootServletInitializer,並重寫configure方法
    啓動類代碼如下:
/**
 * 項目運行入口
 * 繼承SpringBootServletInitializer爲以war包方式發佈項目
 * 如果是以jar包發佈需移除繼承的SpringBootServletInitializer類和configure方法
 */
@SpringBootApplication
public class MainApplication extends SpringBootServletInitializer {
  public static void main(String[] args) {
    SpringApplication.run(MainApplication.class,args);
  }

  @Override
  protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
    return builder.sources(MainApplication.class);
  }
}

在這裏插入圖片描述

  • 打包編譯
    進入到項目的根目錄後,執行下面命令即可打包
#clean爲清除target下的文件,-Dmaven.test.skip=true爲不用編譯和執行測試用例
#執行打包完成後,會在target目錄下生成一個war包
mvn clean install -Dmaven.test.skip=true

在這裏插入圖片描述

  • 把war包放到tomcat的webapps下
    如果想讓項目作爲默認應用(即訪問時不加項目名),需要把ROOT目錄和ROOT.war刪掉,把該項目改名爲ROOT.war
    linux下命令爲:
cp qixing-shop.war /usr/local/tomcat/webapps/
#如果不作爲默認應用,下面三條命令不用執行
rm -rf /usr/local/tomcat/webapps/ROOT
rm -rf /usr/local/tomcat/webapps/ROOT.war
mv qixing-shop.war ROOT.war
  • 啓動
    windows執行tomcat的bin目錄下的startup.bat啓動
    linux執行tomcat的bin目錄下的startup.sh,即sh startup.sh

  • 訪問
    非默認應用訪問路徑:localhost:8080/qixingcxy-shop/login
    默認應用訪問路徑:localhost:8080/login

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章