日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Maven的resources插件配置详解(含过滤器的配置详解)

發(fā)布時(shí)間:2023/12/3 编程问答 59 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Maven的resources插件配置详解(含过滤器的配置详解) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 指定配置文件所在的目錄
  • 使用 excludes 元素可以排除指定的配置文件
  • 使用 includes 元素可以指定要處理的文件
  • 處理測(cè)試資源
  • 過濾器配置

resources 插件,負(fù)責(zé)將配置文件復(fù)制到編譯目錄中。Maven Java Web 項(xiàng)目默認(rèn)的編譯目錄 target/classes。

兩種配置文件 src/main/resources、src/test/resources,Maven 默認(rèn)只關(guān)注 src/main/resources 目錄下的配置文件,其他目錄下的配置文件會(huì)被忽略。

指定配置文件所在的目錄

如果有配置文件不在 resources 目錄下,這個(gè)時(shí)候就需要指定配置文件所在的目錄:

<build><!--指定屬性文件,里面含有鍵值對(duì)--><filters> <filter>${user.home}/antx.properties</filter> </filters> <resources><resource><!--指定配置文件所在的目錄--><directory>src/main/java</directory><!--啟用上面的過濾文件--><filtering>true</filtering> </resource></resources> </build>

使用 excludes 元素可以排除指定的配置文件

<resources><resource><directory>src/main/java</directory><!--排除所有的txt文件,其他的文件都會(huì)被復(fù)制--><excludes><exclude>**/*.txt</exclude></excludes></resource> </resources>

使用 includes 元素可以指定要處理的文件

<resources><resource><directory>src/main/java</directory><!--除了txt文件,其他的文件都不會(huì)被復(fù)制--><includes><include>**/*.txt</include></includes></resource> </resources>

處理測(cè)試資源

處理測(cè)試資源,其實(shí)就是默認(rèn)處理 src/test/resources 下的資源,需要在 pom.xml 中配置如下:

<build><filters><filter>src/main/resources/${fileName}.properties</filter></filters><resources><resource><directory>src/main/resources</directory><filtering>true</filtering></resource></resources><testResources><testResource><!--指定測(cè)試資源的存放目錄--><directory>src/test/resources</directory></testResource></testResources> </build>

打開命令終端,切換到 pom.xml 文件所在的目錄下,執(zhí)行下面的指令:

[~/documents/IdeaProjects/demo02]$ mvn resources:testResources [INFO] Scanning for projects... [INFO] [INFO] -------------------------< com.example:demo02 >------------------------- [INFO] Building demo02 1.0-SNAPSHOT [INFO] --------------------------------[ jar ]--------------------------------- [INFO] [INFO] --- maven-resources-plugin:2.6:testResources (default-cli) @ demo02 --- [INFO] Using 'UTF-8' encoding to copy filtered resources. [INFO] Copying 1 resource [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 0.893 s [INFO] Finished at: 2022-01-26T20:43:22+08:00 [INFO] ------------------------------------------------------------------------

我們?cè)倏纯?target 目錄下有什么內(nèi)容:

[~/documents/IdeaProjects/demo02]$ ls target test-classes

如上查詢結(jié)果可知,執(zhí)行 mvn resources:testResources 會(huì)產(chǎn)生一個(gè) test-classes 目錄,src/test/resources 目錄下的資源文件會(huì)復(fù)制到 test-classes 目錄下。

過濾器配置

~/test.properties 文件中的內(nèi)容:

name=liaowenxiong

src/main/java/test.txt 配置文件中的內(nèi)容如下:

您好 ${name}

${屬性名/變量名},表示獲取對(duì)應(yīng)屬性/變量的值。

pom.xml 配置過濾文件,資源中啟用過濾器:

<build><filters><!-- 指定過濾器文件,其實(shí)就是個(gè)屬性文件,里面含有鍵值對(duì) --><filter>${user.home}/test.properties</filter></filters><resources><resource><!--指定配置文件所在的目錄--><directory>src/main/java</directory><!--啟用上面的過濾文件--><filtering>true</filtering></resource></resources> </build>

執(zhí)行下面的命令處理資源文件:

[~/documents/IdeaProjects/demo02]$ mvn resources:resources [INFO] Scanning for projects... [INFO] [INFO] -------------------------< com.example:demo02 >------------------------- [INFO] Building demo02 1.0-SNAPSHOT [INFO] --------------------------------[ jar ]--------------------------------- [INFO] [INFO] --- maven-resources-plugin:2.6:resources (default-cli) @ demo02 --- [INFO] Using 'UTF-8' encoding to copy filtered resources. [INFO] Copying 3 resources [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 0.976 s [INFO] Finished at: 2022-01-26T18:31:29+08:00 [INFO] ------------------------------------------------------------------------

執(zhí)行上述的命令之后,Maven 會(huì)將指定目錄下的資源文件復(fù)制到編譯輸出目錄(target/classes)下,并且資源文件 src/main/java/test.txt 中的 ${name} 會(huì)替換成過濾文件中的對(duì)應(yīng)屬性的值,過濾文件中含有屬性 name,其值為 liaowenxiong,所以就將 ${name} 替換成 liaowenxiong,因此進(jìn)入 target/classes 目錄下,打開 test.txt 文件,會(huì)看到以下的內(nèi)容:

您好 liaowenxiong

舉個(gè)典型的應(yīng)用場(chǎng)景:
開發(fā)環(huán)境和測(cè)試環(huán)境的數(shù)據(jù)庫(kù)連接參數(shù)不同,你可以創(chuàng)建兩份文件數(shù)據(jù)庫(kù)參數(shù)文件(properties 文件),然后再創(chuàng)建一份真正需要代碼解析的數(shù)據(jù)庫(kù)配置文件(properties 文件或者 xml 文件)。

開發(fā)環(huán)境下的數(shù)據(jù)庫(kù)參數(shù)文件 db1.properties 內(nèi)容如下:

url=jdbc:mysql://192.168.200.123:3306/dev username=root password=123

測(cè)試環(huán)境下的數(shù)據(jù)庫(kù)參數(shù)文件 db2.properties 的內(nèi)容如下:

url=jdbc:mysql://192.168.200.124:3306/test username=root password=456

數(shù)據(jù)庫(kù)配置文件 db.properties 的內(nèi)容如下:

driverClassName=com.mysql.jdbc.Driver # 如果是數(shù)據(jù)庫(kù)在本地,且端口號(hào)是3306,則可以簡(jiǎn)寫成:jdbc:mysql:///test url=${url} userName=${userName} password=${password} # 連接池初始化時(shí)會(huì)生成5個(gè)連接對(duì)象 initialSize=5 maxActive=10 maxWait=3000

我把三份屬性文件都放在 src/main/resources 目錄下,如下圖所示:

pom.xml 配置內(nèi)容如下:

<build><filters><!--指定過濾文件,文件名使用變量的值替換--><filter>src/main/resources/${fileName}.properties</filter></filters><resources><resource><directory>src/main/resources</directory><!--啟用過濾器--><filtering>true</filtering></resource></resources></build>

打開命令終端,切換到 pom.xml 所在的目錄下,執(zhí)行下面的命令:

[~/documents/IdeaProjects/demo02]$ mvn resources:resources -DfileName=db1 [INFO] Scanning for projects... [INFO] [INFO] -------------------------< com.example:demo02 >------------------------- [INFO] Building demo02 1.0-SNAPSHOT [INFO] --------------------------------[ jar ]--------------------------------- [INFO] [INFO] --- maven-resources-plugin:2.6:resources (default-cli) @ demo02 --- [INFO] Using 'UTF-8' encoding to copy filtered resources. [INFO] Copying 3 resources [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 0.948 s [INFO] Finished at: 2022-01-26T20:25:49+08:00 [INFO] ------------------------------------------------------------------------

在命令終端查看生成的數(shù)據(jù)庫(kù)配置 db.properties 文件:

[~/documents/IdeaProjects/demo02]$ cat target/classes/db.properties driverClassName=com.mysql.jdbc.Driver # 如果是數(shù)據(jù)庫(kù)在本地,且端口號(hào)是3306,則可以簡(jiǎn)寫成:jdbc:mysql:///test url=jdbc:mysql://192.168.200.123:3306/dev userName=root password=123 # 連接池初始化時(shí)會(huì)生成5個(gè)連接對(duì)象 initialSize=5 maxActive=10 maxWait=3000

上述可以看到,屬性 url、userName、password 的值全部替換成 db1.properties 文件中對(duì)應(yīng)屬性的值。

執(zhí)行 mvn resources:resources時(shí),如果指定變量 fileName=db2,看看效果如何:

[~/documents/IdeaProjects/demo02]$ mvn resources:resources -DfileName=db2 [INFO] Scanning for projects... [INFO] [INFO] -------------------------< com.example:demo02 >------------------------- [INFO] Building demo02 1.0-SNAPSHOT [INFO] --------------------------------[ jar ]--------------------------------- [INFO] [INFO] --- maven-resources-plugin:2.6:resources (default-cli) @ demo02 --- [INFO] Using 'UTF-8' encoding to copy filtered resources. [INFO] Copying 3 resources [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 0.950 s [INFO] Finished at: 2022-01-26T20:31:05+08:00 [INFO] ------------------------------------------------------------------------

在命令終端查看生成的數(shù)據(jù)庫(kù)配置 db.properties 文件:

[~/documents/IdeaProjects/demo02]$ cat target/classes/db.properties driverClassName=com.mysql.jdbc.Driver # 如果是數(shù)據(jù)庫(kù)在本地,且端口號(hào)是3306,則可以簡(jiǎn)寫成:jdbc:mysql:///test url=jdbc:mysql://192.168.200.124:3306/test userName=root password=456 # 連接池初始化時(shí)會(huì)生成5個(gè)連接對(duì)象 initialSize=5 maxActive=10 maxWait=3000

上述可以看到,屬性 url、userName、password 的值全部替換成 db2.properties 文件中對(duì)應(yīng)屬性的值。

總結(jié)

以上是生活随笔為你收集整理的Maven的resources插件配置详解(含过滤器的配置详解)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。