最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺談Maven resrouce下filtering作用

 更新時(shí)間:2024年03月28日 11:35:47   作者:懶鳥(niǎo)一枚  
Filtering是Maven Resources Plugin的一個(gè)功能,本文主要介紹了淺談Maven resrouce下filtering作用,具有一定的參考價(jià)值,感興趣的可以了解一下

filtering 作用

  • 是啥:filtering是maven的resource插件中提供的一個(gè)功能。
  • 為啥:想要解決編碼過(guò)程中的配置文件的變量注入的問(wèn)題,如:在不同的開(kāi)發(fā)環(huán)境下要啟用不同的配置屬性,如何靈活的切換?filtering為我們提供了方法。
  • 咋用:首先通過(guò)上面的例子啟動(dòng),之后,就可以在pom文件中定義屬性,并在resources目錄下的配置文件,如application.yml中使用了,具體使用方法見(jiàn)下文詳述。

作用一 引入pom和resource 資源文件的變量預(yù)編譯配置

<build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
</build>

上面的代碼就是對(duì)resources目錄開(kāi)啟了filtering過(guò)濾,不添加filtering ,默認(rèn)認(rèn)值為false。那么這個(gè)功能到底有什么效果呢?,

為了更深入的了解這個(gè)filtering,不妨從是什么?為什么?怎么用?三個(gè)方面進(jìn)行闡述。

1.pom文件 讀取pom文件內(nèi)部的變量

  • 在pom文件內(nèi)部對(duì)變量的應(yīng)用,都通過(guò) v a l u e n a m e 的方式,比如常見(jiàn)的: {value_name}的方式,比如常見(jiàn)的: valuen?ame的方式,比如常見(jiàn)的:{project.artifactId}

2.application.yml 文件讀取application.yml 文件內(nèi)部的變量方式

  • 在application.yml中對(duì)內(nèi)部變量的引用,通常也是使用${value_name}的方式,比如常見(jiàn)的:${server.port}

這樣就導(dǎo)致了一個(gè)沖突,兩種配置文件都用同一套標(biāo)識(shí)符,那yaml文件怎么引入pom中的變量呢,于是就有了resource.delimiter這個(gè)屬性

3.yaml文件讀取pom文件的變量方式

如果查看spring-boot-starter-parent中的屬性欄,就可以看到赫然寫(xiě)著:
<resource.delimiter>@</resource.delimiter>
這代表了什么?這表示,在yaml中如果要引用pom中的屬性,直接使用@標(biāo)識(shí)符就行了,用法為@value_of_pom@。

就這樣,所以就出現(xiàn)了第三種變量的引用方式:

  • 在resources的yaml文件中引用pom中的變量時(shí),通過(guò)@value_of_pom@進(jìn)行引用(前提是開(kāi)啟了資源的過(guò)濾filtering)。

應(yīng)用場(chǎng)景

就是為多個(gè)環(huán)境進(jìn)行配置的時(shí)候:一般情況下,開(kāi)發(fā),測(cè)試,生產(chǎn)環(huán)境是不同的,尤其是其中有一些數(shù)據(jù)庫(kù)的配置,服務(wù)發(fā)現(xiàn)地址的配置,日志文件的位置等都有所區(qū)分。

如果每次一換環(huán)境,就手動(dòng)去一點(diǎn)兒點(diǎn)兒改配置,無(wú)疑是耗時(shí)耗力的,那么有沒(méi)有一種方法,能夠快捷的將環(huán)境進(jìn)行一鍵切換,能夠達(dá)到針對(duì)不同的運(yùn)行環(huán)境采用不同配置的目的呢?

答案是可以的,就是利用我們的filtering對(duì)資源的動(dòng)態(tài)管理。

filtering作為maven-resource插件中的一個(gè)功能,其起作用的時(shí)機(jī)是在maven生命周期中的resource階段,這是一個(gè)對(duì)資源做出處理,先于compile的一個(gè)階段。

4.pom文件讀取 .properties文件的變量

在Maven項(xiàng)目的pom.xml中,你可以使用元素來(lái)定義變量,并使用來(lái)指定資源文件的位置。如果你想要在pom.xml中讀取.properties文件中的變量,可以使用Maven的filtering功能。

以下是一個(gè)簡(jiǎn)單的例子:

在src/main/resources目錄下創(chuàng)建一個(gè).properties文件,比如config.properties。
src/main/resources/config.properties

database.url=jdbc:mysql://localhost/mydb
database.user=myuser
database.password=mypassword

在pom.xml中配置資源過(guò)濾和元素。

<project>
    ...
    <properties>
        <database.url>${database.url}</database.url>
        <database.user>${database.user}</database.user>
        <database.password>${database.password}</database.password>
    </properties>
    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>
    ...
</project>

filtering:決定是否將resources目錄下的文件中的tokens(即通過(guò)@val@標(biāo)識(shí)的變量)進(jìn)行參數(shù)替換。這里的參數(shù)主要有兩個(gè)來(lái)源,一個(gè)是來(lái)自于pom文件中的properties屬性,一個(gè)是來(lái)源于外部的.properties文件(個(gè)人認(rèn)為這個(gè)文件不可與springboot中的配置文件混為一談)

那么如何引用外部的.properties文件呢?通過(guò)另一個(gè)標(biāo)簽下的進(jìn)行路徑的指定。

作用二 開(kāi)啟resource 打包資源文件的過(guò)濾

通過(guò)includes和 excludes 標(biāo)簽進(jìn)行打包資源文件的過(guò)濾

<build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
                <includes>
                    <include>a.properties</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <!--filtering標(biāo)簽的值默認(rèn)是false,在這里可寫(xiě)可不寫(xiě)-->
                <filtering>false</filtering>
                <excludes>
                    <exclude>a.properties</exclude>
                </excludes>
            </resource>
        </resources>
</build>

一些maven命令參數(shù)

主要用于切換環(huán)境的:

mvn resources:resources -Dfile=my-setting-file

這表示給pom中的file變量賦值為了my-setting-file,如果這個(gè)是設(shè)定的filter的文件名,即會(huì)引入my-setting-file中的設(shè)定參數(shù)。

mvn clean package -Ptest,jdk8,!os-windows

這表示啟用test,jdk8兩個(gè)profile,不激活os-windows。

到此這篇關(guān)于淺談Maven resrouce下filtering作用的文章就介紹到這了,更多相關(guān)Maven resrouce filtering作用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

您可能感興趣的文章:

相關(guān)文章

  • Java中多個(gè)線程交替循環(huán)執(zhí)行的實(shí)現(xiàn)

    Java中多個(gè)線程交替循環(huán)執(zhí)行的實(shí)現(xiàn)

    有些時(shí)候面試官經(jīng)常會(huì)問(wèn),兩個(gè)線程怎么交替執(zhí)行呀,本文就來(lái)詳細(xì)的介紹一下Java中多個(gè)線程交替循環(huán)執(zhí)行的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-01-01
  • Java分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)原理與用法詳解

    Java分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)原理與用法詳解

    這篇文章主要介紹了Java分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)原理與用法,結(jié)合實(shí)例形式分析了java分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu)、跳轉(zhuǎn)語(yǔ)句等相關(guān)概念、原理、使用技巧與操作注意事項(xiàng),需要的朋友可以參考下
    2020-02-02
  • Java算法篇之BF與KMP算法深入講解

    Java算法篇之BF與KMP算法深入講解

    BF算法和KMP算法都是串的模式匹配算法,但是它們的時(shí)間復(fù)雜度不同,下面這篇文章主要介紹了Java算法篇之BF與KMP算法的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-07-07
  • MyBatis的CRUD中的不同參數(shù)綁定查詢實(shí)現(xiàn)

    MyBatis的CRUD中的不同參數(shù)綁定查詢實(shí)現(xiàn)

    本文主要介紹了MyBatis的CRUD中的不同參數(shù)綁定查詢實(shí)現(xiàn),主要包括單個(gè)參數(shù)傳遞綁定,序號(hào)參數(shù)傳遞綁定,注解參數(shù)傳遞綁定,pojo(對(duì)象)參數(shù)傳遞綁定,map參數(shù)傳遞綁定這幾種類型,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-12-12
  • java清除u盤(pán)內(nèi)存卡里的垃圾文件示例

    java清除u盤(pán)內(nèi)存卡里的垃圾文件示例

    手機(jī)內(nèi)存卡空間被用光了,但又不知道哪個(gè)文件占用了太大,一個(gè)個(gè)文件夾去找又太麻煩,開(kāi)發(fā)了個(gè)小程序把手機(jī)所有文件(包括路徑下所有層次子文件夾下的文件)進(jìn)行一個(gè)排序,這樣你就可以找出哪個(gè)文件占用了內(nèi)存太大了
    2014-02-02
  • 關(guān)于JVM翻越內(nèi)存管理的墻

    關(guān)于JVM翻越內(nèi)存管理的墻

    這篇文章主要介紹了JVM翻越內(nèi)存管理的墻,由虛擬機(jī)管理內(nèi)存看起來(lái)一切都很美好,但也正是因?yàn)榘芽刂苾?nèi)存的權(quán)力交給了Java虛擬機(jī),一旦出現(xiàn)內(nèi)存泄漏和溢出方面的問(wèn)題,就不得不從Java虛擬機(jī)角度上去排查問(wèn)題,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05
  • Java8常用的新特性詳解

    Java8常用的新特性詳解

    這篇文章主要介紹了Java8常用的新特性詳解,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)Java8新特性的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • SpringBoot集成Redis之配置、序列化與持久化方式

    SpringBoot集成Redis之配置、序列化與持久化方式

    本文介紹了Redis的基本概念、常用數(shù)據(jù)類型及操作、SpringBoot整合Redis的方法、高級(jí)特性與安全性、性能優(yōu)化、測(cè)試與部署、數(shù)據(jù)一致性及版本更新等內(nèi)容,通過(guò)本文的學(xué)習(xí),讀者可以掌握Redis的使用方法,并在實(shí)際項(xiàng)目中發(fā)揮其優(yōu)勢(shì)
    2024-11-11
  • SpringBoot3-yaml文件配置方式

    SpringBoot3-yaml文件配置方式

    這篇文章主要介紹了SpringBoot3-yaml文件配置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • SpringBoot的@EnableAsync和@Async注解分析

    SpringBoot的@EnableAsync和@Async注解分析

    這篇文章主要介紹了SpringBoot的@EnableAsync和@Async注解分析,Spring Boot是一個(gè)快速開(kāi)發(fā)框架,可以幫助開(kāi)發(fā)人員快速構(gòu)建基于Spring的應(yīng)用程序,需要的朋友可以參考下
    2023-07-07

最新評(píng)論

怀安县| 镇远县| 泾川县| 乐业县| 威远县| 城固县| 繁峙县| 白朗县| 德庆县| 桐乡市| 博客| 通海县| 盐山县| 盐池县| 墨脱县| 内乡县| 永定县| 双辽市| 赤水市| 新巴尔虎左旗| 新干县| 平安县| 上栗县| 渭南市| 云和县| 湘潭县| 金华市| 高要市| 平凉市| 满洲里市| 梁平县| 博野县| 宁明县| 周至县| 西贡区| 图片| 东台市| 商河县| 剑阁县| 大名县| 娱乐|