欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring Boot項目打包和運行的操作方法

 更新時間:2025年05月14日 14:16:05   作者:梅成林俊杰  
Spring Boot 應(yīng)用內(nèi)嵌了 Web 服務(wù)器,所以基于 Spring Boot 開發(fā)的 web應(yīng)用也可以獨立運行,無須部署到其他 Web服務(wù)器中,下面以打包demo_test1項目為例,將 Spring Boot 項目打包為可執(zhí)行的 JAR 包并運行,感興趣的朋友一起看看吧

一、打包為JAR包并運行

        Spring Boot 應(yīng)用內(nèi)嵌了 Web 服務(wù)器,所以基于 Spring Boot 開發(fā)的 web應(yīng)用也可以獨立運行,無須部署到其他 Web服務(wù)器中。下面以打包demo_test1項目為例,將 Spring Boot 項目打包為可執(zhí)行的 JAR 包并運行,具體操作如下。

1.打包為可執(zhí)行的 JAR 包

(1)添加Maven打包插件

        SpringBoot程序是基于 Maven 創(chuàng)建的,在對SpringBoot 項目進(jìn)行打包前,需要在項目pom.xml文件中加入 Maven 打包插件,Spring Boot 為項目打包提供了整合后的 Maven 打包插件 spring-boot-maven-plugin,可以直接使用,具體代碼如下。

<build>
    <plugins>
        <!--Maven打包插件-->
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>${spring-boot.version}</version>
        </plugin>
    </plugins>
</build>

(2)使用IDEA進(jìn)行打包

        在Maven中提供了package 打包指令,IDEA 中也提供了非常便捷的項目打包支持。在此選擇在IDEA中對項目進(jìn)行打包。在IDEA中單擊右側(cè)的“Maven”工具欄,會彈出 Maven 的操作界面,如圖所示。

        Lifecycle(生命周期)下展示了 Maven 項目構(gòu)建生命周期中常用的命令,選中對應(yīng)的命令雙擊后可以快速執(zhí)行該Maven 命令。其中,clean 命令可以清除所有在構(gòu)建過程中生成的文件,test 命令可以使用合適的單元測試框架來測試編譯的源代碼,package 命令可以完成項目編譯、單元測試、打包功能。

        為了確保打包后的項目為最新編譯的代碼,并且不包含測試階段的代碼,可以在打創(chuàng)前先執(zhí)行 clean 命令,在跳過測試階段的模塊后進(jìn)行打包。首先在 Maven 操作界面中雙擊“clean”執(zhí)行清除 target 操作,然后單擊界面上方的

圖標(biāo)設(shè)置打包時跳過測試階段的模塊,最后雙擊“package”執(zhí)行打包操作。執(zhí)行打包操作后,會在控制臺中輸出打包的結(jié)果,如果打包成功會在項目的target 文件夾下創(chuàng)建項目對應(yīng)的可執(zhí)行JAR包,如圖所示。

2.運行 JAR 包

        一個可執(zhí)行的 JAR包可以由 Java虛擬機(Java Virtual Machine,JVM)直接執(zhí)行而無須事先提取文件或者設(shè)置類路徑。對此可以直接使用Java命令運行可執(zhí)行的JAR包,運行JAR 包的命令的語法格式如下。

java -jar JAR包名稱

JAR包名稱為包含 JAR后綴的完整名稱。

        運行JAR包時可以選擇在IDEA中或者在cmd窗口中執(zhí)行,這里選擇在cmd窗口中執(zhí)行。在本地打開項目的target 文件夾,如圖所示。

        在地址欄中輸人“cmd”后按下“Enter”鍵,在當(dāng)前文件夾路徑下打開 cmd窗口,并在彈出的 cmd 窗口中使用 Java 命令運行 chapter01-0.0.1-SNAPSHOT.jar,如圖所示。

        可以看出,Spring Boot項目打成的JAR 包已經(jīng)成功運行,并顯示了默認(rèn)的端口號8080。需要注意的是,由于執(zhí)行Java命令需要計算機中安裝了Java的JDK環(huán)境,如果沒有安裝的話,執(zhí)行后會報錯。
        JAR 包運行后,可以對項目進(jìn)行訪問,以測試打包后的效果,在瀏覽器中訪問 http://localhost:8080,如圖所示。

二、打包為WAR包并運行

        雖然通過 Spring Boot內(nèi)嵌的Tomcat 可以將項目打成JAR包后直接運行,但每個JAR包中都會包含獨立的 web 容器,對服務(wù)器的使用消耗會比較大。當(dāng)想要在一個 Web容器中運行多個項目時,可以把每個項目打包成一個WAR包,然后部署到Web容器中運行下面以打包demo_test1項目為例,將Spring Boot項目打包為WAR 包并運行,具體操作如下。

1.打包為可執(zhí)行的 WAR 包

(1)聲明打包方式為war

        默認(rèn)情況下創(chuàng)建的 Spring Boot 項目打包方式為jar,要將項目打包為WAR包,需要在項目的pom.xml文件中聲明當(dāng)前項目的打包方式為war。打開demo_test1項目的 pom.xml文件,使用<packaging>標(biāo)簽聲明項目打包方式為 war,如圖。

(2)排除內(nèi)置 Tomcat

        Spring Boot 為項目提供了內(nèi)嵌的 Tomcat 服務(wù)器,使用外部的 Tomcat 時,需要在 pom.xml文件中排除內(nèi)置的Tomcat,具體代碼如下。

<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>

        在上述代碼中,在spring-boot-starter-web的依賴中使用<exclusion>標(biāo)簽聲明排除該啟
動器中的 Tomcat。

(3)添加Tomcat 依賴

        排除內(nèi)置的Tomcat后,需要在 pom.xml文件中手動添加 Tomcat的依賴,以便在后續(xù)開發(fā)中使用對應(yīng)的 API,具體代碼如下。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <!--僅在編譯和測試階段使用,不會被打包到war包中-->
    <scope>provided</scope>
</dependency>

        在上述代碼中添加了 Tomcat 的依賴,由于對應(yīng) Tomcat 的依賴只需在編譯和測試階段使用,所以使用<scope>標(biāo)簽將該依賴的作用范圍指定在編譯和測試階段,避免打包時將對應(yīng)的依賴打包到 WAR 包中。

(4)添加插件

在項目的 pom.xml 文件中定義打包插件,以及項目打包后包的名稱具體代碼如下。

<build>
    <finalName>demo_test1_war</finalName>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>${spring-boot.version}</version>
        </plugin>
    </plugins>
</build>

        在上述代碼中,使用<finalName>標(biāo)簽用于指定項目打包后的名稱;<plugin>標(biāo)簽用于指定打包插件。

(5)修改 Spring Boot啟動類

        Spring Boot啟動項目的方式有很多種,使用外置 Tomcat時,默認(rèn)啟動類需要繼承 SpringBootServletInitializer 類,并重寫configure()方法。SpringBooServletInitializer 執(zhí)行時,會通過重寫的 confgure()方法中的 SpringApplicationBuilder 實例構(gòu)建并封裝 SpringApplication 對象,并最終調(diào)用SpringApplicationrun()方法進(jìn)行項目的啟動。修改后的 Spring Boot 啟動類如下面代碼所示。

package com.merlin.demo_test1;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
@ServletComponentScan // 開啟基于注解方式的Servlet組件掃描支持
@SpringBootApplication
public class DemoTest1Application extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(DemoTest1Application.class);
    }
    public static void main(String[] args) {
        SpringApplication.run(DemoTest1Application.class, args);
    }
}

        在上述代碼中,啟動類 DemoTest1Application繼承SpringBootServletInitializer 類并重寫configure()方法,在confgure()方法中,sources(DemoTest1Application.class)方法的參數(shù)必須是項目主程序的啟動類。需要說明的是,為Spring Boot提供啟動的Servlet 初始化器 SpringBootServletInitializer 時,典型的做法就是讓主程序啟動類繼承 SpringBootServletInitializer 類并實現(xiàn) confgure()方法;除此之外,還可以在項目中單獨提供一個繼承 SpringBootServletInitializer 的子類,并實現(xiàn) confgure()方法。
        至此,將項目打包為WAR包的準(zhǔn)備工作已經(jīng)完成,下面參照之前使用Maven工具欄中的命令打包項目的過程,將項目進(jìn)行打包,打包后的結(jié)果如圖所示。

        從上圖可以看出,控制臺輸出“BUILD SUCCESS”等信息,并且在項目的target 文件夾下創(chuàng)建了項目名稱為demo_test1_war的WAR包,說明成功將項目打包為可執(zhí)行 WAR 包。

錯誤信息:

解決方法:在src/main/webapp/WEB-INF/目錄下創(chuàng)建一個簡單的web.xml文件,內(nèi)容可以是最小化的配置:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
</beans>

然后clean后再package打包一次即可。

2.運行 WAR 包

        將打包好的 WAR包復(fù)制到本地Tomcat安裝目錄下的webapps文件夾中,在cmd窗口中執(zhí)行 Tomcat 安裝目錄下 bin 目錄中的 startup.bat 命令啟動 Tomcat。Tomcat 啟動后,執(zhí)行效果如圖所示。

        從上圖可以看出,Tomcat啟動成功。Tomcat啟動時會自動解壓Tomcat安裝目錄下的 webapps 文件夾中的 WAR 包,并部署在Tomcat中,此時可以對項目進(jìn)行訪問。需要說明的是,對這種使用外部Tomcat 部署的項目進(jìn)行訪問時,必須加上項目名稱,即打包成WAR 包后的項目全名,例如訪問demo_test1_war項目映射路徑為根目錄,其對應(yīng)的請求地址為“http://http://localhost:8080/demo_test1_war/”,在瀏覽器中的訪問效果如下圖所示。

        從上圖可以得出,將打包的 WAR 包部署到外部Tomcat后,可以正常對項目的資源進(jìn)行訪問。
需要注意的是,Spring Boot 2.7.6默認(rèn)內(nèi)嵌 Tomcat 的版本為9.0.69,將指定版本的 Spring Boot 項目以 WAR 包形式部署到外部Tomcat 中時,應(yīng)盡量使用與 Spring Boot 項目匹配的Tomcat 版本進(jìn)行項目部署,否則在部署過程中可能出現(xiàn)異常。

到此這篇關(guān)于Spring Boot項目打包和運行的文章就介紹到這了,更多相關(guān)Spring Boot打包和運行內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring Cloud引入Eureka組件,完善服務(wù)治理

    Spring Cloud引入Eureka組件,完善服務(wù)治理

    這篇文章主要介紹了Spring Cloud引入Eureka組件,完善服務(wù)治理的過程詳解,幫助大家更好的理解和使用spring cloud,感興趣的朋友可以了解下
    2021-02-02
  • Java中常用修飾符的使用方法匯總

    Java中常用修飾符的使用方法匯總

    下面小編就為大家?guī)硪黄狫ava中常用修飾符的使用方法匯總。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • Java類加載機制實現(xiàn)步驟解析

    Java類加載機制實現(xiàn)步驟解析

    這篇文章主要介紹了Java類加載機制實現(xiàn)步驟解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-03-03
  • Java實戰(zhàn)項目 健身管理系統(tǒng)

    Java實戰(zhàn)項目 健身管理系統(tǒng)

    本文是一個Java語言編寫的實戰(zhàn)項目,是一個健身管理系統(tǒng),主要用到了ssm+springboot等技術(shù),技術(shù)含量筆記高,感興趣的童鞋跟著小編往下看吧
    2021-09-09
  • JAVA十大排序算法之插入排序詳解

    JAVA十大排序算法之插入排序詳解

    這篇文章主要介紹了java中的插入排序,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-08-08
  • 基于spring?data?jpa?@query返回map的踩坑記錄

    基于spring?data?jpa?@query返回map的踩坑記錄

    這篇文章主要介紹了基于spring?data?jpa?@query返回map的踩坑記錄,具有很好的參考價值,如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • 解決mybatis映射結(jié)果集失效的問題

    解決mybatis映射結(jié)果集失效的問題

    這篇文章主要介紹了解決mybatis映射結(jié)果集失效的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • java中自定義線程池最佳實踐教程

    java中自定義線程池最佳實踐教程

    自定義線程池的最佳實踐包括:合理配置線程池大小、選擇合適的隊列類型、設(shè)置合理的拒絕策略、理解核心線程和非核心線程的區(qū)別、定期監(jiān)控和調(diào)優(yōu)、避免死鎖、使用合適的線程工廠、設(shè)計高效的任務(wù)、使用現(xiàn)有的線程池實現(xiàn)以及合理處理超時和中斷
    2025-03-03
  • MyBatis-Plus逆向工程——Generator的使用

    MyBatis-Plus逆向工程——Generator的使用

    這篇文章主要介紹了MyBatis-Plus逆向工程——Generator的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • IDEA中@Autowired自動注入MyBatis?Mapper報紅警告的幾種解決方法

    IDEA中@Autowired自動注入MyBatis?Mapper報紅警告的幾種解決方法

    這篇文章主要介紹了IDEA中@Autowired自動注入MyBatis?Mapper報紅警告的幾種解決方法
    2024-02-02

最新評論