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

淺談Maven resrouce下filtering作用

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

filtering 作用

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

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

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

上面的代碼就是對resources目錄開啟了filtering過濾,不添加filtering ,默認認值為false。那么這個功能到底有什么效果呢?,

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

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

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

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

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

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

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

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

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

  • 在resources的yaml文件中引用pom中的變量時,通過@value_of_pom@進行引用(前提是開啟了資源的過濾filtering)。

應(yīng)用場景

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

如果每次一換環(huán)境,就手動去一點兒點兒改配置,無疑是耗時耗力的,那么有沒有一種方法,能夠快捷的將環(huán)境進行一鍵切換,能夠達到針對不同的運行環(huán)境采用不同配置的目的呢?

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

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

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

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

以下是一個簡單的例子:

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

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

在pom.xml中配置資源過濾和元素。

<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(即通過@val@標識的變量)進行參數(shù)替換。這里的參數(shù)主要有兩個來源,一個是來自于pom文件中的properties屬性,一個是來源于外部的.properties文件(個人認為這個文件不可與springboot中的配置文件混為一談)

那么如何引用外部的.properties文件呢?通過另一個標簽下的進行路徑的指定。

作用二 開啟resource 打包資源文件的過濾

通過includes和 excludes 標簽進行打包資源文件的過濾

<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標簽的值默認是false,在這里可寫可不寫-->
                <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,如果這個是設(shè)定的filter的文件名,即會引入my-setting-file中的設(shè)定參數(shù)。

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

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

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

您可能感興趣的文章:

相關(guān)文章

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

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

    有些時候面試官經(jīng)常會問,兩個線程怎么交替執(zhí)行呀,本文就來詳細的介紹一下Java中多個線程交替循環(huán)執(zhí)行的實現(xiàn),文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學習學習吧
    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é)合實例形式分析了java分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu)、跳轉(zhuǎn)語句等相關(guān)概念、原理、使用技巧與操作注意事項,需要的朋友可以參考下
    2020-02-02
  • Java算法篇之BF與KMP算法深入講解

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

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

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

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

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

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

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

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

    Java8常用的新特性詳解

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

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

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

    SpringBoot3-yaml文件配置方式

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

    SpringBoot的@EnableAsync和@Async注解分析

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

最新評論

大石桥市| 平阴县| 广灵县| 广平县| 绥江县| 旌德县| 贵南县| 文登市| 修文县| 新疆| 石嘴山市| 宁国市| 托克逊县| 石首市| 盐池县| 淅川县| 阿图什市| 扎鲁特旗| 县级市| 武冈市| 上蔡县| 黄平县| 会东县| 沧州市| 天祝| 遂平县| 安徽省| 衡水市| 洞头县| 黄山市| 新蔡县| 德阳市| 镇江市| 乃东县| 社旗县| 淮安市| 华池县| 江阴市| 红河县| 宁安市| 宾阳县|