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

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

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

把 SpringBoot Maven 項(xiàng)目打包成 jar 文件時(shí),我們通常用到 spring-boot-maven-plugin 插件。

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

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

1、項(xiàng)目中 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><!--父項(xiàng)目-->
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.4.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
<!--項(xiàng)目基本信息、父項(xiàng)目信息、依賴、自定義屬性等等...-->
    <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)簽指定項(xiàng)目的聲明。modelVersion 標(biāo)簽指定 POM 模型的版本。目前使用的是 4.0.0 版本。這是 Maven 項(xiàng)目的根元素,定義了項(xiàng)目模型的版本。

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

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

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

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

img

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

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

img

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

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

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

二、<plugin> 插件

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

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

插件子元素:

1、groupId: 指定插件的 groupId,標(biāo)識(shí)插件的組織或提供者。
2、artifactId: 指定插件的 artifactId,標(biāo)識(shí)插件的具體名稱。
3、version: 指定插件的版本號(hào)。
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í)行過(guò)程中所需的依賴項(xiàng)。
包含一個(gè)或多個(gè) 元素,用于引入插件在執(zhí)行過(guò)程中所需的依賴項(xiàng)。

6、executions: 描述插件執(zhí)行的階段和配置。
: 這個(gè)標(biāo)簽用于定義一個(gè)或多個(gè)插件的執(zhí)行配置。
: 每個(gè) < execution > 標(biāo)簽定義一個(gè)執(zhí)行單元。可以在不同的構(gòu)建階段執(zhí)行多個(gè)目標(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)建一個(gè) JAR 文件。這個(gè)目標(biāo)是由 Maven 的 maven-jar-plugin 插件提供的。

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

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

configuration 的兩大作用:

7.1、傳遞參數(shù): 插件可能需要某些參數(shù)來(lái)正確執(zhí)行其功能。這些參數(shù)可以通過(guò) 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ù)。通過(guò) configuration 屬性,你可以定制插件的行為以適應(yīng)項(xiàng)目的特定需求。

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

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

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

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

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

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

7.3、集合類(lèi)型參數(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)簽指定哪些測(cè)試類(lèi)被包括在測(cè)試中。
excludes 標(biāo)簽指定哪些測(cè)試類(lèi)被排除在測(cè)試外。
skipTests 標(biāo)簽用于跳過(guò)測(cè)試執(zhí)行。

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

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

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

img

四、構(gòu)建階段

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

1、編譯階段(Compile)

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

2、測(cè)試階段(Test)

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

3、打包階段(Package)

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

4、驗(yàn)證階段(Verify)

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

5、安裝階段(Install)

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

6、部署階段(Deploy)

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

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

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

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

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

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

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

相關(guān)文章

  • 詳解IDEA搭建springBoot方式一(推薦)

    詳解IDEA搭建springBoot方式一(推薦)

    這篇文章主要介紹了IDEA搭建springBoot方式一(推薦),本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Java利用正則取標(biāo)簽之間的數(shù)據(jù)

    Java利用正則取標(biāo)簽之間的數(shù)據(jù)

    這篇文章主要介紹了Java利用正則取標(biāo)簽之間的數(shù)據(jù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-08-08
  • 詳解Java中如何使用JFreeChart生成甘特圖

    詳解Java中如何使用JFreeChart生成甘特圖

    甘特圖是一種流行的項(xiàng)目管理工具,用于顯示項(xiàng)目的進(jìn)度和任務(wù)分配,在Java開(kāi)發(fā)中,JFreeChart是一個(gè)強(qiáng)大的開(kāi)源圖表庫(kù),能夠生成各種類(lèi)型的圖表,下面我們就來(lái)看看如何使用JFreeChart生成甘特圖吧
    2025-01-01
  • SpringBoot多環(huán)境切換的配置實(shí)現(xiàn)

    SpringBoot多環(huán)境切換的配置實(shí)現(xiàn)

    在日常的開(kāi)發(fā)中,一般都會(huì)分好幾種環(huán)境,本文就來(lái)介紹一下SpringBoot多環(huán)境切換的配置實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • mybatis分割字符串并循環(huán),實(shí)現(xiàn)in多個(gè)參數(shù)的操作

    mybatis分割字符串并循環(huán),實(shí)現(xiàn)in多個(gè)參數(shù)的操作

    這篇文章主要介紹了mybatis分割字符串并循環(huán),實(shí)現(xiàn)in多個(gè)參數(shù)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Ubuntu 使用Jni開(kāi)發(fā)實(shí)例詳解

    Ubuntu 使用Jni開(kāi)發(fā)實(shí)例詳解

    這篇文章主要介紹了Ubuntu 使用Jni開(kāi)發(fā)實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • Spring Boot @Conditional注解用法示例介紹

    Spring Boot @Conditional注解用法示例介紹

    這篇文章主要給大家介紹了關(guān)于Spring Boot @Conditional注解用法的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Spring Boot具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • 使用Springboot+poi上傳并處理百萬(wàn)級(jí)數(shù)據(jù)EXCEL

    使用Springboot+poi上傳并處理百萬(wàn)級(jí)數(shù)據(jù)EXCEL

    這篇文章主要介紹了使用Springboot+poi上傳并處理百萬(wàn)級(jí)數(shù)據(jù)EXCEL,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • 詳解Java項(xiàng)目中讀取properties文件

    詳解Java項(xiàng)目中讀取properties文件

    本篇文章主要介紹了Java項(xiàng)目中讀取properties文件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2016-12-12
  • SpringBoot使用不同環(huán)境動(dòng)態(tài)加載不同配置文件

    SpringBoot使用不同環(huán)境動(dòng)態(tài)加載不同配置文件

    通過(guò)在resource目錄下創(chuàng)建不同環(huán)境的配置文件,并在Spring?Boot啟動(dòng)類(lèi)中使用環(huán)境變量來(lái)加載相應(yīng)的配置文件,從而實(shí)現(xiàn)不同環(huán)境下的配置自動(dòng)加載
    2024-11-11

最新評(píng)論