亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

SpringBoot Maven 項目 pom 中的 plugin 插件用法小結(jié)

 更新時間:2025年01月08日 11:48:47   作者:Young丶  
本文詳細(xì)介紹了Spring Boot Maven項目打包成jar文件時使用的spring-boot-maven-plugin插件,深入探討了插件的配置元素,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧

把 SpringBoot Maven 項目打包成 jar 文件時,我們通常用到 spring-boot-maven-plugin 插件。

前面也介紹過,在 spring-boot-starter-parent POM 和 spring-boot-starter POM 中都有插件的管理,現(xiàn)在我們就擼一把構(gòu)建元素中插件的用法。

一、spring-boot-maven-plugin 插件的使用

1、項目中 spring-boot-maven-plugin 插件的使用

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">  
<modelVersion>4.0.0</modelVersion>
<parent><!--父項目-->
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.4.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
<!--項目基本信息、父項目信息、依賴、自定義屬性等等...-->
    <build><!--構(gòu)建元素-->
        <plugins><!--插件引入-->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
        <finalName>xxx</finalName> <!--jar的名稱-->
    </build>
</project>

project 標(biāo)簽指定項目的聲明。modelVersion 標(biāo)簽指定 POM 模型的版本。目前使用的是 4.0.0 版本。這是 Maven 項目的根元素,定義了項目模型的版本。

parent 標(biāo)簽指定父項目信息,這里繼承了 spring-boot-starter-parent 的 pom。

build 標(biāo)簽指定項目的構(gòu)建配置。它包含了多個子元素,如 、 和 < finalName > 等等。

spring-boot-maven-plugin 插件用于打包和運(yùn)行 Spring Boot 應(yīng)用。

2、spring-boot-starter POM 中的 spring-boot-maven-plugin

img

在這個 pom 里對 spring-boot-maven-plugin 插件的版本進(jìn)行管理。

3、spring-boot-starter-parent POM 中的 spring-boot-maven-plugin

img

id 標(biāo)簽指定了此執(zhí)行的唯一標(biāo)識符 repackage。
goals 標(biāo)簽內(nèi)定義了執(zhí)行目標(biāo) goal 為 repackage。
mainClass 標(biāo)簽通過占位符 ${start-class} 來指定項目的主類,Maven 會替換這個占位符為實(shí)際的主類。

從上面的文件可以看出來,在 spring-boot-starter-parent POM 中對 spring-boot-maven-plugin 插件的管理更加細(xì)化了。

由于在項目的 pom 里,我們繼承了 spring-boot-starter-parent 的 pom,spring-boot-starter-parent 又繼承了 spring-boot-starter 的 pom,因此在項目的構(gòu)建部分,我們可以直接引用 spring-boot-maven-plugin 插件,而不必再重復(fù)管理該插件的版本信息和一些構(gòu)建信息。

二、<plugin> 插件

元素用于配置構(gòu)建過程中使用的各種插件,它可以包含一個或多個 < plugin> 標(biāo)簽。

元素是在構(gòu)建生命周期的不同階段執(zhí)行的工具,它們可以執(zhí)行各種任務(wù),例如編譯代碼、運(yùn)行測試、打包項目、生成報告等。

插件子元素:

1、groupId: 指定插件的 groupId,標(biāo)識插件的組織或提供者。
2、artifactId: 指定插件的 artifactId,標(biāo)識插件的具體名稱。
3、version: 指定插件的版本號。
4、extensions: 可選子元素。指示插件是否為 Maven 的核心擴(kuò)展插件。默認(rèn)值為 false。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.1</version>
    <!-- extensions 默認(rèn)為 false -->
</plugin>

如果未顯式指定 extensions 屬性,或者將其設(shè)置為 false,則表示插件不是 Maven 的核心擴(kuò)展插件。這意味著 Maven 將插件作為標(biāo)準(zhǔn)插件處理,它們遵循標(biāo)準(zhǔn)的插件生命周期和行為。

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>1.6.0</version>
    <extensions>true</extensions>
</plugin>

如果將 extensions 屬性顯式設(shè)置為 true,則表示插件是 Maven 的核心擴(kuò)展插件。這意味著插件可以在 Maven 構(gòu)建中擴(kuò)展或修改 Maven 的核心行為,通常用于提供額外的功能或集成。

5、dependencies: 指定插件在執(zhí)行過程中所需的依賴項。
包含一個或多個 元素,用于引入插件在執(zhí)行過程中所需的依賴項。

6、executions: 描述插件執(zhí)行的階段和配置。
: 這個標(biāo)簽用于定義一個或多個插件的執(zhí)行配置。
: 每個 < execution > 標(biāo)簽定義一個執(zhí)行單元??梢栽诓煌臉?gòu)建階段執(zhí)行多個目標(biāo)。

<executions>
    <execution>
        <phase>package</phase> <!-- 指定Maven構(gòu)建生命周期的階段 -->
        <goals>
            <goal>jar</goal> <!-- 在package階段執(zhí)行jar目標(biāo) -->
            <goal>jfxnative</goal> <!-- 在package階段執(zhí)行jfxnative目標(biāo) -->
        </goals>
    </execution>
</executions>

<phase>package</phase>:指定了 Maven 生命周期的 package 階段。在 Maven 的標(biāo)準(zhǔn)構(gòu)建生命周期中,package 階段用于將編譯后的代碼打包成可分發(fā)格式(如 JAR 文件)。

<goal>jar</goal>:指示 Maven 在 package 階段創(chuàng)建一個 JAR 文件。這個目標(biāo)是由 Maven 的 maven-jar-plugin 插件提供的。

<goal>jfxnative</goal>: 指示 Maven 在 package 階段創(chuàng)建一個本地可執(zhí)行文件(如 EXE 文件)。這個目標(biāo)是由 javafx-maven-plugin 插件提供的。jfxnative 目標(biāo)會使用 javapackager 或 jpackage 來生成本地可執(zhí)行文件。

7、configuration: 用于配置插件在執(zhí)行過程中的具體行為和參數(shù),以定制插件的功能和行為。

configuration 的兩大作用:

7.1、傳遞參數(shù): 插件可能需要某些參數(shù)來正確執(zhí)行其功能。這些參數(shù)可以通過 configuration 元素傳遞給插件。

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.1</version>
        <configuration>
            <source>1.8</source>
            <target>1.8</target>
        </configuration>
    </plugin>

<source>< target>: 傳遞給編譯插件的 Java 版本信息。

在上述例子中,<configuration> 元素用于向 Maven 編譯器插件傳遞編譯源代碼的 Java 版本信息。

7.2、定制插件行為: 不同的插件支持不同的配置參數(shù)。通過 configuration 屬性,你可以定制插件的行為以適應(yīng)項目的特定需求。

7.2.1、基本類型參數(shù): 如字符串、整數(shù)等,用于傳遞簡單的配置信息。

<configuration>
    <outputDirectory>target/classes</outputDirectory>
    <verbose>true</verbose>
    <includeSystemScope>true</includeSystemScope>
</configuration>

outputDirectory 標(biāo)簽指定插件輸出的目錄。
verbose 標(biāo)簽控制是否輸出詳細(xì)信息。
includeSystemScope 標(biāo)簽用于指定是否包括系統(tǒng)范圍的依賴項(system scope dependencies)。系統(tǒng)范圍的依賴項是那些指定了本地文件路徑的依賴項,這些依賴項通常是一些特殊的、不可通過 Maven 倉庫獲取的庫。

7.2、復(fù)雜類型參數(shù): 如對象或嵌套配置,用于傳遞更復(fù)雜的配置信息。

<configuration>
    <compilerArguments>
        <arg>-Xlint:unchecked</arg>
    </compilerArguments>
    <encoding>UTF-8</encoding>
</configuration>

compilerArguments 標(biāo)簽指定傳遞給編譯器插件的編譯參數(shù)。
encoding 標(biāo)簽指定源文件編碼格式。

7.3、集合類型參數(shù): 用于傳遞列表或數(shù)組等復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。

<configuration>   
<skipTests>true</skipTests>
        <includes>
            <include>**/*Tests.java</include>
        </includes>
        <excludes>
            <exclude>**/SlowTests.java</exclude>
        </excludes>
</configuration>

includes 標(biāo)簽指定哪些測試類被包括在測試中。
excludes 標(biāo)簽指定哪些測試類被排除在測試外。
skipTests 標(biāo)簽用于跳過測試執(zhí)行。

plugin 標(biāo)簽里的子元素太多了,看不完根本看不完。還是用了再了解吧。

三、dependency 和 plugin 主要區(qū)別

dependency 和 plugin 有很多相似的地方,plugin 標(biāo)簽里也可以包含一個或多個 dependency 標(biāo)簽。

img

四、構(gòu)建階段

在 Maven 項目中,構(gòu)建過程是一組定義明確的活動或步驟,用于生成項目的最終輸出(如 JAR 或 WAR 文件)。構(gòu)建過程本身包括編譯、測試、打包等多個階段,但它不完全屬于編譯、測試或運(yùn)行這三個階段中的任何一個,而是涵蓋了這些階段中的一些或全部,以及其他額外的步驟。

1、編譯階段(Compile)

這是構(gòu)建過程的開始,源代碼被編譯成字節(jié)碼文件(.class 文件)。這個階段對應(yīng)于 Maven 的 compile 生命周期階段。

2、測試階段(Test)

在這一階段,項目的單元測試被執(zhí)行,以驗證代碼的功能性。這通常對應(yīng)于 Maven 的 test 生命周期階段。測試階段通常發(fā)生在編譯階段之后。

3、打包階段(Package)

編譯后的字節(jié)碼和資源文件被打包成可分發(fā)的格式,如 JAR、WAR 或 EAR 文件。這一階段對應(yīng)于 Maven 的 package 生命周期階段。

4、驗證階段(Verify)

在這一階段,對打包的結(jié)果進(jìn)行質(zhì)量檢查,可能包括運(yùn)行集成測試、靜態(tài)代碼分析等。這一步驟確保打包的產(chǎn)品符合質(zhì)量標(biāo)準(zhǔn)。

5、安裝階段(Install)

在這一階段,打包的項目被安裝到本地 Maven 倉庫中,以便在該機(jī)器上的其他項目中使用。

6、部署階段(Deploy)

在這一階段,最終的包被上傳到遠(yuǎn)程倉庫中,供其他開發(fā)者和項目使用。

7、構(gòu)建與編譯、測試、運(yùn)行的關(guān)系

編譯:構(gòu)建的一部分,確保代碼無誤并轉(zhuǎn)換成機(jī)器可執(zhí)行的形式。

測試:也是構(gòu)建的一部分,用于驗證功能和性能。

運(yùn)行:通常指在開發(fā)完成后,產(chǎn)品被部署并實(shí)際運(yùn)行的階段。構(gòu)建過程負(fù)責(zé)生成運(yùn)行所需的所有代碼和資源,但實(shí)際的運(yùn)行通常發(fā)生在構(gòu)建過程之外,特別是在生產(chǎn)環(huán)境中。

總的來說,構(gòu)建過程是項目開發(fā)周期中非常關(guān)鍵的一部分,涵蓋了從代碼編譯到產(chǎn)品部署的多個步驟,確保軟件產(chǎn)品能夠按預(yù)期構(gòu)建和發(fā)布。

到此這篇關(guān)于SpringBoot Maven 項目 pom 中的 plugin 插件用法小結(jié)的文章就介紹到這了,更多相關(guān)SpringBoot Maven plugin 插件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論