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

使用maven的profile構建不同環(huán)境配置的方法

 更新時間:2024年10月27日 09:37:33   作者:代碼與酒  
這篇文章主要介紹了使用maven的profile構建不同環(huán)境配置的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

最近使用到了maven的profile功能,發(fā)現(xiàn)這個功能的確很好用也很實用,這塊的知識比較多也比較亂,其實真正理解了之后非常簡單,為了鞏固總結知識,有個更清晰的知識體系,本文誕生了,希望能讓像我一樣零基礎的小白一看就懂,有請戲精,閃亮登場~~

1.背景

作為一名猿,在實際的項目開發(fā)中,通常會有很多配置環(huán)境,比如最基本的:開發(fā)、測試、生產(chǎn);不同的環(huán)境,某些文件的配置是不一樣的(如:數(shù)據(jù)庫連接信息、properties文件的配置等),如果我們進行開發(fā)or測試時每次都得手動去修改配置文件,難免有些麻煩且容易出現(xiàn)問題(我反正是深有體會╥﹏╥),所以,當當當當~maven的profile功能就出現(xiàn)了。

2.Profile簡介

簡單說一下,maven的profile可以讓我們定義一系列的配置信息,然后指定其激活條件。這樣我們就可以定義多個profile,然后每個profile對應不同的激活條件和配置信息,從而達到不同環(huán)境使用不同配置信息的目的。

3.Profile在哪定義

一般來講,有三種地方可以定義,不同的地方,作用范圍不同,可配置項也不同;

  • 針對于特定項目的profile配置,我們可以定義在該項目的pom.xml中。
  • 針對于特定用戶的profile配置,我們可以在用戶的settings.xml文件中定義profile。該文件在用戶目錄下的“.m2”目錄下。
  • 全局的profile配置。全局的profile是定義在Maven安裝目錄下的“conf/settings.xml”文件中的。

4.Profile使用實例

ps:前方將使用Eclipse來演示,主要以pom配置為主,重點涉及到了profile、filter、resource標簽,工程源代碼在文章最末尾。

過多的理論就不再說了,還是配合著實例代碼來看更容易理解一些。另外,構建不同的環(huán)境配置主要有兩種效果(或者叫實現(xiàn)方式):
- 第一種,根據(jù)不同的環(huán)境生成不同的配置文件(profile+resources);
- 第二種,根據(jù)不同的環(huán)境生成不同的配置內容,并替換原配置文件中的內容(profile+resources+filters);

什么意思?可能比較抽象,別捉急,我們一個一個演示。哦對了,先放一張項目結構圖嘗嘗鮮(為了結構更清晰,我把單元測試的包刪了):

這里寫圖片描述

4.1 生成不同配置文件

本實例達到的效果是:根據(jù)不同的環(huán)境,動態(tài)打包生成不同環(huán)境下的 db.properties 文件。

(1)在pom.xml中的project節(jié)點下配置profile

 <profiles>
  <!-- 開發(fā) -->
  <profile>
   <!-- profile的id -->
   <id>dev</id>
   <properties>
    <!-- 此處的jastar.env可以自定義,其他地方可以使用${jastar.env}來引用此屬性 -->
    <jastar.env>dev</jastar.env>
   </properties>
   <activation>
    <!-- 默認激活此配置 -->
    <activeByDefault>true</activeByDefault>
   </activation>
  </profile>
  <!-- 測試 -->
  <profile>
   <id>test</id>
   <properties>
    <jastar.env>test</jastar.env>
   </properties>
  </profile>
  <!-- 生產(chǎn) -->
  <profile>
   <id>prd</id>
   <properties>
    <jastar.env>prd</jastar.env>
   </properties>
  </profile>
 </profiles>

(2)建立三種環(huán)境的資源文件夾,如下:

src/main/filters/dev
src/main/filters/test
src/main/filters/prd

并添加各自的db.properties文件:

這里寫圖片描述

注意:maven標準目錄中,提供了一個filters目錄用于存放資源過濾文件。推薦在filters目錄下創(chuàng)建,而不是resources目錄,因為resources目錄中的文件默認情況下是不會被過濾的,還需在resources節(jié)點下額外的配置一些東西;這樣的話結構也較清晰,resource目錄存放公共資源文件,filters目錄存放不同環(huán)境差異化資源文件。

(3)配置maven-resources-plugin插件

在構建WAR包的時候會經(jīng)過資源文件處理階段,maven-resources-plugin 則用來處理資源文件。在pom.xml中的build節(jié)點下配置如下:

<plugins>
 <!-- 編譯插件,此處用來設置jdk的版本,否則默認的版本很低 -->
 <plugin>
  <artifactId>maven-compiler-plugin</artifactId>
  <configuration>
   <source>1.7</source>
   <target>1.7</target>
   <encoding>UTF-8</encoding>
  </configuration>
 </plugin>
 <!-- 資源文件處理插件,必須配置 -->
 <plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-resources-plugin</artifactId>
  <configuration>
   <encoding>UTF-8</encoding>
  </configuration>
 </plugin>
</plugins>

(4)配置resources節(jié)點

在pom.xml中的build節(jié)點下配置如下:

<!-- 最后生成的資源文件 -->
<resources>
 <!-- 所有公共資源文件 -->
 <resource>
  <directory>src/main/resources</directory>
 </resource>
 <!-- 不同環(huán)境的資源文件 -->
 <resource>
  <directory>src/main/filters/${jastar.env}</directory>
 </resource>
</resources>

(5)打包測試

至此,配置已經(jīng)完成了,細心的童鞋會發(fā)現(xiàn),我們maven update 項目之后,資源目錄會出現(xiàn)以下現(xiàn)象:

這里寫圖片描述 

沒錯,這說明我們的配置生效了,因為默認的profile是dev,所以Eclipse會智能的把該目錄顯示在這里。

好,接下來打包測試一下是否達到了我們的預期效果。右鍵項目Run AS,如下:

這里寫圖片描述 

填寫maven命令后run:

這里寫圖片描述 

運行完成刷新項目可以看到,target目錄下生成了“demo-maven-profile.war”文件,打開文件可以看到生成的屬性文件如下:

這里寫圖片描述

查看db.properties文件內容,perfect~當然,你們也可以試試指定其他profile,在此不再演示。

這里寫圖片描述

4.2 注入不同的配置內容

本實例達到的效果是:根據(jù)不同的環(huán)境,將 src/main/resources/log4j.properties中的部分內容替換為src/main/filters/dev、test、prd/log4j.properties中的內容。

(1)依然是先配置profile,上面已經(jīng)配置過了,同上。
(2)新建src/main/resources/log4j.properties文件如下:

這里寫圖片描述 

(3)新建src/main/filters/dev、test、prd/log4j.properties文件如下:

這里寫圖片描述 

(4)重點來了,在pom.xml的build節(jié)點下配置filters節(jié)點和resources節(jié)點,如下(注意注釋部分):

<!-- 此處定義變量配置文件地址 -->
<filters>
 <!-- 注意如果配置了多個filter,并且他們包含有相同的key,則以后面的value為最終值 -->
 <filter>src/main/filters/${jastar.env}/log4j.properties</filter>
</filters>
<resources>
 <resource>
  <directory>src/main/resources</directory>
  <!-- 這句配置是關鍵,表示該資源文件夾下要進行過濾操作 -->
  <filtering>true</filtering>
 </resource>
 <resource>
  <directory>src/main/filters/${jastar.env}</directory>
 </resource>
</resources>

(5)打包測試

配置完成,接下來同樣以上面的方式打包,這里我的profile填寫test,運行完成,打開war包,查看log4j.properties文件如下,可以看到log4j的部分內容被替換了,實驗成功!

這里寫圖片描述

5.擴展

5.1 Profile的激活方式

1. 使用 activeByDefault 設置激活

在以上的實例中,我們使用了以下方式設置了默認激活:

<activation> 
 <activeByDefault>true</activeByDefault> 
</activation>

2. 在 settings.xml 中使用 activeProfiles 指定激活

profile配置如下:

<profiles> 
 <profile> 
  <id>profile1</id> 
  <properties> 
   <hello>lilei</hello> 
  </properties> 
 </profile> 

 <profile> 
  <id>profile2</id> 
  <properties> 
   <hello>hanmeimei</hello> 
  </properties> 
 </profile> 
</profiles>

激活如下(支持多個):

<activeProfiles> 
 <activeProfile>profile1</activeProfile> 
</activeProfiles> 

3. 在maven命令中使用參數(shù)顯示激活

Eclipse窗口式運行幫我們隱藏了很多東西,其實原始的 maven 命令應該是這樣寫的:

mvn clean package –Pprofile1 

當然,也可以取消激活:

mvn clean package –P!profile1 

還有激活多個:

mvn clean package -Pprofile1,profile2,!profile3

4. 根據(jù)環(huán)境來激活

profile一個非常重要的特性就是它可以根據(jù)不同的環(huán)境來激活,比如根據(jù)jdk的版本:

<!-- 如果jdk的版本為1.8則激活該profile -->
<profiles>
 <profile>
  <id>profile1</id>
  <activation>
   <jdk>1.8</jdk>
  </activation>
 </profile>
</profiles>

根據(jù)操作系統(tǒng):

<profiles>
 <profile>
  <id>profile1</id>
  <activation>
   <os>
    <!-- 不必指定所有信息 -->
    <name>linux</name>
    <family>unix</family>
    <arch>amd64</arch>
    <version>3.19.0-30-generic</version>
   </os>
  </activation>
 </profile>
</profiles>

根據(jù)環(huán)境變量:

<profiles>
 <profile>
  <id>profile1</id>
  <activation>
   <property>
    <name>debug</name>
    <value>true</value>
   </property>
  </activation>
 </profile>
</profiles>

根據(jù)文件是否存在來激活:

<profiles>
 <profile>
  <id>profile1</id>
  <activation>
   <file>
    <missing>/path/to/missing/file</missing>
    <exists>/path/to/exists/file</exists>
   </file>
  </activation>
 </profile>
</profiles>

不同類型的激活方式可以組合使用,但是只有但兩個條件都匹配時才能激活。

5.2 關于Filter

Filter 是 maven 的 resource插件提供的功能,作用是用環(huán)境變量、pom文件里定義的屬性和指定配置文件里的屬性替換屬性(*.properties)文件里的占位符(${jdbc.url})。

src/main/resources目錄有個配置文件jdbc.properties,內容如下:

jdbc.url=${pom.jdbc.url}
jdbc.username=${pom.jdbc.username}
jdbc.passworkd=${pom.jdbc.password}

配置 resource 插件,啟用filtering功能并添加屬性到pom:

<project>
 ...
 <!-- 用pom里定義的屬性做替換 -->
 <properties>
  <pom.jdbc.url>jdbc:mysql://127.0.0.1:3306/dev</pom.jdbc.url>
  <pom.jdbc.username>root</pom.jdbc.username>
  <pom.jdbc.password>123456</pom.jdbc.password>
 </properties>
 <build>
  ...
  <!-- 可以把屬性寫到文件里,用屬性文件里定義的屬性做替換 -->
  <filters>
   <filter>src/main/filters.properties</filter>
  </filters>
  <resources>
   <resource>
    <directory>src/main/resources</directory>
    <filtering>true</filtering>
   </resource>
  </resources>
  ...
 </build>
 ...
</project>

編譯包后 target 目錄下的 jdbc.properties :

jdbc.url=jdbc:mysql://127.0.0.1:3306/dev
jdbc.username=root
jdbc.passworkd=123456

文章到這里就差不多了,最后,為各位小伙伴默默奉上源代碼:傳送門

到此這篇關于使用maven的profile構建不同環(huán)境配置的方法的文章就介紹到這了,更多相關maven profile構建不同環(huán)境配置內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java使用Flyway實現(xiàn)數(shù)據(jù)庫版本控制的技術指南

    Java使用Flyway實現(xiàn)數(shù)據(jù)庫版本控制的技術指南

    在現(xiàn)代應用開發(fā)中,數(shù)據(jù)庫結構經(jīng)常隨著業(yè)務需求不斷演變,使用手動SQL腳本管理數(shù)據(jù)庫版本,不僅容易出現(xiàn)錯誤,還難以跟蹤和回滾,Flyway是一個強大的數(shù)據(jù)庫遷移工具,能夠幫助開發(fā)者高效管理和自動化數(shù)據(jù)庫的版本控制,本文將介紹Flyway的基本功能及其在SpringBoot項目中的實踐
    2025-02-02
  • java中?${}?和?#{}?有什么區(qū)別

    java中?${}?和?#{}?有什么區(qū)別

    本文主要介紹了java中${}和#{}有什么區(qū)別,${}和#{}都是MyBatis中用來替換參數(shù)的,它們都可以將用戶傳遞過來的參數(shù),替換到MyBatis最終生成的SQL中,但它們區(qū)別卻是很大的,感興趣的小伙伴可以一起來學習下面詳細內容
    2022-08-08
  • Java面向對象之成員隱藏與屬性封裝操作示例

    Java面向對象之成員隱藏與屬性封裝操作示例

    這篇文章主要介紹了Java面向對象之成員隱藏與屬性封裝操作,結合實例形式分析了Java面向對象程序設計中成員的隱藏及屬性封裝相關實現(xiàn)與使用操作技巧,需要的朋友可以參考下
    2018-06-06
  • SpringBoot如何通過webjars管理靜態(tài)資源文件夾

    SpringBoot如何通過webjars管理靜態(tài)資源文件夾

    這篇文章主要介紹了SpringBoot如何通過webjars管理靜態(tài)資源文件夾,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-10-10
  • Spring Framework常用面試題及答案匯總

    Spring Framework常用面試題及答案匯總

    這篇文章主要介紹了Spring Framework常用面試題及答案匯總,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-06-06
  • MybatisX-Generator不生成domain文件夾的問題及解決

    MybatisX-Generator不生成domain文件夾的問題及解決

    在使用MybatisX-Generator生成數(shù)據(jù)庫表實體時,如果發(fā)現(xiàn)沒有生成domain文件夾以及User.java文件,是因為MybatisX版本更新,最新版需要在options里額外勾選model才能生成domain,勾選model并點擊finish后,成功生成domain文件夾及User.java文件
    2025-01-01
  • Java 如何從spring容器中獲取注入的bean對象

    Java 如何從spring容器中獲取注入的bean對象

    這篇文章主要介紹了Java 如何從spring容器中獲取注入的bean對象,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-11-11
  • SpringBoot+Redisson自定義注解一次解決重復提交問題

    SpringBoot+Redisson自定義注解一次解決重復提交問題

    項目中經(jīng)常會出現(xiàn)重復提交的問題,本文主要介紹了SpringBoot+Redisson自定義注解一次解決重復提交問題,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • 解決FeignClient發(fā)送post請求異常的問題

    解決FeignClient發(fā)送post請求異常的問題

    這篇文章主要介紹了FeignClient發(fā)送post請求異常的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • SpringBoot實現(xiàn)異步事件Event詳解

    SpringBoot實現(xiàn)異步事件Event詳解

    這篇文章主要介紹了SpringBoot實現(xiàn)異步事件Event詳解,異步事件的模式,通常將一些非主要的業(yè)務放在監(jiān)聽器中執(zhí)行,因為監(jiān)聽器中存在失敗的風險,所以使用的時候需要注意,需要的朋友可以參考下
    2023-11-11

最新評論

抚松县| 鄢陵县| 福海县| 四会市| 保亭| 沧源| 大同市| 额尔古纳市| 济南市| 南溪县| 陕西省| 蒙山县| 贵溪市| 克拉玛依市| 福贡县| 镇远县| 海阳市| 锡林浩特市| 新余市| 阿拉善盟| 汉中市| 从江县| 屏边| 大冶市| 托克逊县| 德清县| 英吉沙县| 正安县| 沧州市| 万安县| 拉孜县| 玉林市| 商洛市| 广灵县| 阿拉善盟| 蒙自县| 纳雍县| 自治县| 呼和浩特市| 监利县| 邹平县|