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

maven中resource配置的實(shí)現(xiàn)示例

 更新時(shí)間:2023年09月11日 09:01:37   作者:2021不再有雨  
我們?cè)谑褂肕aven組件來構(gòu)建項(xiàng)目的時(shí)候,通常將配置文件放在資源文件目錄下,本文主要介紹了maven中resource配置的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下

1. 使用場景

通常情況下, maven項(xiàng)目中默認(rèn)資源文件為src/main/resourcessrc/test/resources目錄

但項(xiàng)目中可能會(huì)有以下場景:

  • 需要添加src/main/resources之外的目錄中的配置文件
  • 只需要src/main/resources中部分配置文件
  • 需要對(duì)src/main/resources中配置文件的變量, 進(jìn)行placeholder進(jìn)行解析值替換

這時(shí)候, 就需要在pom中配置build.resouces.resouce進(jìn)行個(gè)性化配置

2. 使用語法

2.1 resource配置結(jié)構(gòu)

在pom中配置中可以配置的元素結(jié)構(gòu)如下:

<build>
<resources>
  <resource>
 		<directory></directory>
 		<filtering></filtering>
	  <includes>
  			<include></include>
 		</includes>
  	<excludes>
   			<exclude></exclude>
  	</excludes>
 </resource>
  <resource>
    ...
  </resource>
</resources>
</build>
  • 標(biāo)簽<directory>指定資源文件目錄
  • 標(biāo)簽 <includes>指定資源文件目錄中,僅包含哪些文件被打包
  • 標(biāo)簽<excludes>指定資源文件目錄中,僅哪些文件不被打包
  • 標(biāo)簽<filtering>是一個(gè)bool值,默認(rèn)值為false。指定打包時(shí)的配置文件中是否進(jìn)行變量替換

2.2 配置語法及特殊場景

(示例項(xiàng)目的結(jié)構(gòu)參考文件最后)

2.2.1 filtering的使用

1.資源文件中使用${keyword}占位符來定義變量, 如src/main/resouces/application.properties:

application.user=${username}
application.password=${password}

2.這時(shí)候可以在pom.xml文件中定義變量的取值

<properties>
 <username>mysql</username>
 <password>password123</password>
</properties>

3.如果需要對(duì)配置文件中變量進(jìn)行替換實(shí)際值,就需要開啟<filtering>,該值設(shè)置為true

  <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>application.properties</include>
                </includes>
                <filtering>true</filtering>
            </resource>

打包后, 資源文件src/main/resouces/application.properties:

application.user=mysql
application.password=mysql

另, 變量的定義可以不放在pom里, 也可以指定其他文件, 通過build.filters.filter配置即可. 示例:

<build>
        <finalName>test-maven-resource</finalName>
        <filters>
            <filter>src/main/config/${active.profile}/zookeeper.properties</filter>
            <filter>src/main/config/${active.profile}/xdcs.properties</filter>
            <filter>src/main/config/${active.profile}/maven-test.properties</filter>
            <filter>src/main/config/${active.profile}/web.properties</filter>
        </filters>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
            <resource>
                <directory>src/main/config/${active.profile}</directory>
                <filtering>false</filtering>
            </resource>
        </resources>

2.2.2 resource之間的關(guān)系

怎么理解pom中多個(gè)resource的關(guān)系? 并集? 交集? 還是其他?

先說結(jié)論: 多個(gè)resource可以理解為按順序?qū)Χ鄠€(gè)resource進(jìn)行收集資源

測試示例如下: 第一個(gè)resource排除application.properties, 第二個(gè)resource包含application.properties:

 <resources>
            <!-- 多個(gè)resource的關(guān)系: 可以理解為依次對(duì)多個(gè)resource進(jìn)行收集資源 -->
            <resource>
                <directory>src/main/resources</directory>
                <excludes>
                    <exclude>application.properties</exclude>
                </excludes>
                <filtering>false</filtering>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>application.properties</include>
                </includes>
                <filtering>true</filtering>
            </resource>
   </resources>

打包后, 得到如下結(jié)構(gòu):

target/test-resource
├── META-INF
└── WEB-INF
    └── classes
        ├── application.properties
        ├── application.xml
        ├── application.yaml
        └── application.yml

2.2.3 includes和excludes的關(guān)系

一般情況下一個(gè)resource中單獨(dú)使用其中一個(gè)即可滿足要求:

  • 標(biāo)簽 <includes>指定資源文件目錄中,僅包含哪些文件被打包
  • 標(biāo)簽<excludes>指定資源文件目錄中,僅哪些文件不被打包

注意, 上述描述中僅的定義. 當(dāng)同時(shí)存在includesexcludes是以哪個(gè)為主?

先說結(jié)論: 取兩者描述資源的交集

測試示例:

 <resource>
                <directory>src/main/resources</directory>
                <excludes>
                    <exclude>application.properties</exclude>
                </excludes>
                <includes>
                    <include>application.yaml</include>
                    <include>application.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>

打包后得到結(jié)果:

target/test-resource
├── META-INF
└── WEB-INF
    └── classes
        ├── application.xml
        └── application.yaml

2.2.4 打包默認(rèn)其他目錄

打包src/main/resources默認(rèn)目錄之外的目錄, 指定<directory>為對(duì)應(yīng)目錄即可

<!-- 場景1:增加默認(rèn)resource之外的目錄 -->
            <resource>
                <directory>src/main/config</directory>
                <includes>
                    <!-- **表示任意目錄,*.*表示任意文件名和擴(kuò)展名-->
                    <include>**/*.*</include>
                </includes>
                    <!-- 表示是否對(duì)配置文件中的${}占位符進(jìn)行解析替換-->
                <filtering>false</filtering>
            </resource>

打包得到結(jié)構(gòu):

target/test-resource
├── META-INF
└── WEB-INF
    └── classes
        └── redis.properties

從上述結(jié)果中, 可以得出一個(gè)非常重要的結(jié)論:

如果pom中顯式定義了resource, 則要想默認(rèn)的src/main/resources目錄生效, 必須也顯式額外配置

2.2.5 include和exclude支持通配符

** 表示任意目錄, *.*表示任意文件名和擴(kuò)展名

<include>**/*.xml</include>
<include>**/*.*</include>

2.2.6 自定義filter占位符

默認(rèn)的占位符為${}, 但是為了與其他場景區(qū)分(如spring), 可能需要自定義占位符.

只需要顯式定義<resource.delimiter>的properties即可.

<properties>
        <username>mysql</username>
        <password>admin</password>
        <resource.delimiter>@@</resource.delimiter>
 </properties>
<build>
        <finalName>test-resource</finalName>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>application.properties</include>
                </includes>
                <filtering>true</filtering>
            </resource>
        </resources>
</build>

application.properties文件內(nèi)容:

application.user=@username@
application.password=@password@

還可以在maven-resources-plugin插件的configuration中配置:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-resources-plugin</artifactId>
    <version>2.5</version>
    <configuration>
        <useDefaultDelimiters>false</useDefaultDelimiters>
        <delimiters>
          <!-- 在這里配置配一半即可,即默認(rèn)開始符和結(jié)束符一樣 -->
        <delimiter>@</delimiter>
        </delimiters>
        <encoding>UTF-8</encoding>
    </configuration>
</plugin>

3. 示例項(xiàng)目的結(jié)構(gòu)

src
└── main
    ├── config
    │   └── redis.properties
    ├── java
    └── resources
        ├── application.properties
        ├── application.xml
        ├── application.yaml
        └── application.yml

到此這篇關(guān)于maven中resource配置的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)maven resource配置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • jdbc鏈接遠(yuǎn)程數(shù)據(jù)庫進(jìn)行修改url操作

    jdbc鏈接遠(yuǎn)程數(shù)據(jù)庫進(jìn)行修改url操作

    這篇文章主要為大家詳細(xì)介紹了jdbc鏈接遠(yuǎn)程數(shù)據(jù)庫進(jìn)行修改url操作,感興趣的小伙伴們可以參考一下
    2016-06-06
  • Postman form-data、x-www-form-urlencoded的區(qū)別及說明

    Postman form-data、x-www-form-urlencoded的區(qū)別及說明

    這篇文章主要介紹了Postman form-data、x-www-form-urlencoded的區(qū)別及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • 詳解什么是Java線程池的拒絕策略?

    詳解什么是Java線程池的拒絕策略?

    今天給大家總結(jié)一下線程池的拒絕策略,文中有非常詳細(xì)的介紹及代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴們有很好地幫助,需要的朋友可以參考下
    2021-05-05
  • java靜態(tài)工具類注入service出現(xiàn)NullPointerException異常處理

    java靜態(tài)工具類注入service出現(xiàn)NullPointerException異常處理

    如果我們要在我們自己封裝的Utils工具類中或者非controller普通類中使用@Autowired注解注入Service或者M(jìn)apper接口,直接注入是報(bào)錯(cuò)的,因Utils用了靜態(tài)方法,我們無法直接用非靜態(tài)接口的,遇到這問題,我們要想法解決,下面小編就簡單介紹解決辦法,需要的朋友可參考下
    2021-09-09
  • Java訪問修飾符public、private、protected及默認(rèn)訪問權(quán)限詳解

    Java訪問修飾符public、private、protected及默認(rèn)訪問權(quán)限詳解

    這篇文章主要介紹了Java訪問修飾符public、private、protected及默認(rèn)訪問權(quán)限的相關(guān)資料,每種修飾符都有其特定的使用場景,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-01-01
  • java多線程編程之使用runnable接口創(chuàng)建線程

    java多線程編程之使用runnable接口創(chuàng)建線程

    實(shí)現(xiàn)Runnable接口的類必須使用Thread類的實(shí)例才能創(chuàng)建線程,通過Runnable接口創(chuàng)建線程分為以下兩步
    2014-01-01
  • Mybatis實(shí)現(xiàn)一對(duì)一查詢映射處理

    Mybatis實(shí)現(xiàn)一對(duì)一查詢映射處理

    MyBatis是一種流行的Java持久化框架,它提供了靈活而強(qiáng)大的查詢映射功能,本文主要介紹了Mybatis實(shí)現(xiàn)一對(duì)一查詢映射處理,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-08-08
  • 詳解Spring Boot中PATCH上傳文件的問題

    詳解Spring Boot中PATCH上傳文件的問題

    這篇文章主要介紹了詳解Spring Boot中PATCH上傳文件的問題,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-12-12
  • mybatis 返回Integer,Double,String等類型的數(shù)據(jù)操作

    mybatis 返回Integer,Double,String等類型的數(shù)據(jù)操作

    這篇文章主要介紹了mybatis 返回Integer,Double,String等類型的數(shù)據(jù)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • Java利用DFA算法實(shí)現(xiàn)敏感詞管理

    Java利用DFA算法實(shí)現(xiàn)敏感詞管理

    我們?cè)谕瓿梢恍┪恼掳l(fā)布的功能是,可以使用第三方工具如阿里云的內(nèi)容安全來進(jìn)行文章的審核,但是這個(gè)第三方接口并不能過濾一些敏感詞,所以本文就來講講如何通過DFA算法就行敏感詞管理吧
    2024-11-11

最新評(píng)論