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

maven中resource配置使用詳解

 更新時間:2023年07月14日 14:45:06   作者:2021不再有雨  
這篇文章主要介紹了maven中resource配置使用,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

maven中resource標簽詳解

1. 使用場景

通常情況下, maven項目中默認資源文件為src/main/resourcessrc/test/resources目錄

但項目中可能會有以下場景:

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

這時候, 就需要在pom中配置build.resouces.resouce進行個性化配置

2. 使用語法

2.1 resource配置結構

在pom中配置中可以配置的元素結構如下:

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

2.2 配置語法及特殊場景

(示例項目的結構參考文件最后)

2.2.1 filtering的使用

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

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

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

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

3.如果需要對配置文件中變量進行替換實際值,就需要開啟<filtering>,該值設置為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之間的關系

怎么理解pom中多個resource的關系? 并集? 交集? 還是其他?

先說結論: 多個resource可以理解為按順序對多個resource進行收集資源

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

 <resources>
            <!-- 多個resource的關系: 可以理解為依次對多個resource進行收集資源 -->
            <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>

打包后, 得到如下結構:

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

2.2.3 includes和excludes的關系

一般情況下一個resource中單獨使用其中一個即可滿足要求:

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

注意, 上述描述中僅的定義. 當同時存在includesexcludes是以哪個為主?

先說結論: 取兩者描述資源的交集

測試示例:

 <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>

打包后得到結果:

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

2.2.4 打包默認其他目錄

打包src/main/resources默認目錄之外的目錄, 指定<directory>為對應目錄即可

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

打包得到結構:

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

從上述結果中, 可以得出一個非常重要的結論:

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

2.2.5 include和exclude支持通配符

** 表示任意目錄, *.*表示任意文件名和擴展名

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

2.2.6 自定義filter占位符

默認的占位符為${}, 但是為了與其他場景區(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>
          <!-- 在這里配置配一半即可,即默認開始符和結束符一樣 -->
        <delimiter>@</delimiter>
        </delimiters>
        <encoding>UTF-8</encoding>
    </configuration>
</plugin>

3. 示例項目的結構

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

到此這篇關于maven中resource配置詳解的文章就介紹到這了,更多相關maven resource配置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 淺談Java異常的Exception e中的egetMessage()和toString()方法的區(qū)別

    淺談Java異常的Exception e中的egetMessage()和toString()方法的區(qū)別

    下面小編就為大家?guī)硪黄獪\談Java異常的Exception e中的egetMessage()和toString()方法的區(qū)別。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • 完整B樹算法Java實現(xiàn)代碼

    完整B樹算法Java實現(xiàn)代碼

    這篇文章主要為大家詳細介紹了完整的B樹算法Java實現(xiàn)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • 利用MultipartFile實現(xiàn)文件上傳功能

    利用MultipartFile實現(xiàn)文件上傳功能

    這篇文章主要為大家詳細介紹了利用MultipartFile實現(xiàn)文件上傳功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • Java線程間共享實現(xiàn)方法詳解

    Java線程間共享實現(xiàn)方法詳解

    這篇文章主要介紹了Java線程間共享實現(xiàn)方法詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-10-10
  • 將原生JDBC封裝實現(xiàn)CRUD的案例

    將原生JDBC封裝實現(xiàn)CRUD的案例

    這篇文章主要介紹了將原生JDBC封裝實現(xiàn)CRUD的案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • idea中database不顯示問題的解決

    idea中database不顯示問題的解決

    這篇文章主要介紹了idea中database不顯示問題的解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-07-07
  • Java中LambdaQueryWrapper的常用方法詳解

    Java中LambdaQueryWrapper的常用方法詳解

    這篇文章主要給大家介紹了關于Java中LambdaQueryWrapper常用方法的相關資料,lambdaquerywrapper是一個Java庫,用于構建類型安全的Lambda表達式查詢,需要的朋友可以參考下
    2023-11-11
  • 詳解Mybatis-plus中更新date類型數(shù)據(jù)遇到的坑

    詳解Mybatis-plus中更新date類型數(shù)據(jù)遇到的坑

    這篇文章主要介紹了詳解Mybatis-plus中更新date類型數(shù)據(jù)遇到的坑,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-10-10
  • JAVA多線程中join()方法的使用方法

    JAVA多線程中join()方法的使用方法

    雖然關于討論線程join()方法的博客已經(jīng)非常極其特別多了,但是前幾天我有一個困惑卻沒有能夠得到詳細解釋,當系統(tǒng)中正在運行多個線程時,join()到底是暫停了哪些線程,所以本文詳細解釋一下希望能幫助到和我有相同困惑的同學
    2021-05-05
  • JavaCV實現(xiàn)圖片中人臉檢測的示例代碼

    JavaCV實現(xiàn)圖片中人臉檢測的示例代碼

    這篇文章主要介紹了如何利用JavaCV實現(xiàn)圖片中人臉檢測的功能,文中的示例代碼講解詳細,具有一定的借鑒價值,感興趣的可以了解一下
    2022-11-11

最新評論

镇赉县| 蓬溪县| 门头沟区| 虞城县| 舞阳县| 耿马| 新建县| 厦门市| 鱼台县| 咸丰县| 尚义县| 长沙县| 于田县| 车险| 曲麻莱县| 满洲里市| 铜鼓县| 朝阳区| 洛南县| 邓州市| 齐河县| 清远市| 长岭县| 金山区| 锦州市| 喀喇沁旗| 巩留县| 漯河市| 杨浦区| 开原市| 杭锦后旗| 金湖县| 芒康县| 景德镇市| 高安市| 房产| 阿勒泰市| 文化| 荔波县| 怀远县| 大城县|