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

淺談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編程中使用XFire框架調(diào)用WebService程序接口

    Java編程中使用XFire框架調(diào)用WebService程序接口

    這篇文章主要介紹了Java編程中使用XFire調(diào)用WebService程序接口的方法,WebService是一種跨編程語(yǔ)言和跨操作系統(tǒng)平臺(tái)的遠(yuǎn)程調(diào)用技術(shù),需要的朋友可以參考下
    2015-12-12
  • Java 詳解循環(huán)屏障CyclicBarrier如何實(shí)現(xiàn)多線程分段等待執(zhí)行完成

    Java 詳解循環(huán)屏障CyclicBarrier如何實(shí)現(xiàn)多線程分段等待執(zhí)行完成

    CyclicBarrier是一個(gè)同步工具類(lèi),可以翻譯成循環(huán)屏障,也叫障礙器或同步屏障。CyclicBarrier內(nèi)部有一個(gè)計(jì)數(shù)器count,調(diào)用障礙器的await方法會(huì)使計(jì)數(shù)器count的值減一,當(dāng)計(jì)數(shù)器count的值為0時(shí),表明調(diào)用了await方法線程已經(jīng)達(dá)到了設(shè)置的數(shù)量
    2021-11-11
  • Windows配置多版本JDK的詳細(xì)步驟

    Windows配置多版本JDK的詳細(xì)步驟

    JDK是Java開(kāi)發(fā)工具包的縮寫(xiě),包含了Java編譯器、Java虛擬機(jī)、Java類(lèi)庫(kù)等眾多組件,是Java開(kāi)發(fā)的基石,提供了編寫(xiě)、編譯和運(yùn)行Java程序所必需的工具,有時(shí)候項(xiàng)目需要不同的JDK版本,所以本文給大家介紹了Windows配置多版本JDK的詳細(xì)步驟,需要的朋友可以參考下
    2025-04-04
  • 詳解java數(shù)據(jù)結(jié)構(gòu)與算法之雙鏈表設(shè)計(jì)與實(shí)現(xiàn)

    詳解java數(shù)據(jù)結(jié)構(gòu)與算法之雙鏈表設(shè)計(jì)與實(shí)現(xiàn)

    本篇文章主要介紹了詳解java數(shù)據(jù)結(jié)構(gòu)與算法之雙鏈表設(shè)計(jì)與實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • Mybatis逆工程的使用

    Mybatis逆工程的使用

    最近在學(xué)Mybatis,類(lèi)似Hibernate,Mybatis也有逆工程可以直接生成代碼(mapping,xml,pojo),方便快速開(kāi)發(fā)。這篇文章給大家介紹Mybatis逆工程的使用相關(guān)知識(shí),感興趣的朋友一起看下吧
    2016-06-06
  • java驗(yàn)證用戶(hù)是否已經(jīng)登錄 java實(shí)現(xiàn)自動(dòng)登錄

    java驗(yàn)證用戶(hù)是否已經(jīng)登錄 java實(shí)現(xiàn)自動(dòng)登錄

    這篇文章主要介紹了java驗(yàn)證用戶(hù)是否已經(jīng)登錄,java實(shí)現(xiàn)自動(dòng)登錄,感興趣的小伙伴們可以參考一下
    2016-04-04
  • Hibernate實(shí)現(xiàn)many-to-many的映射關(guān)系

    Hibernate實(shí)現(xiàn)many-to-many的映射關(guān)系

    今天小編就為大家分享一篇關(guān)于Hibernate實(shí)現(xiàn)many-to-many的映射關(guān)系,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-03-03
  • eclipse下搭建hibernate5.0環(huán)境的步驟(圖文)

    eclipse下搭建hibernate5.0環(huán)境的步驟(圖文)

    這篇文章主要介紹了eclipse下搭建hibernate5.0環(huán)境的步驟(圖文),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • Java中定時(shí)任務(wù)的6種實(shí)現(xiàn)方式

    Java中定時(shí)任務(wù)的6種實(shí)現(xiàn)方式

    這篇文章主要給大家分享的是Java中定時(shí)任務(wù)的6種實(shí)現(xiàn)方式,幾乎在所有的項(xiàng)目中,定時(shí)任務(wù)的使用都是不可或缺的,如果使用不當(dāng)甚至?xí)斐少Y損,下面文章我們就來(lái)看看Java中定時(shí)任務(wù)的具體使用方式吧
    2021-10-10
  • 詳解使用SSM實(shí)現(xiàn)簡(jiǎn)單工作流系統(tǒng)之實(shí)現(xiàn)篇

    詳解使用SSM實(shí)現(xiàn)簡(jiǎn)單工作流系統(tǒng)之實(shí)現(xiàn)篇

    這篇文章主要介紹了使用SSM實(shí)現(xiàn)簡(jiǎn)單工作流系統(tǒng)之實(shí)現(xiàn)篇,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12

最新評(píng)論