国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|JavaScript|易語言|

服務器之家 - 編程語言 - Java教程 - maven profile自動切換環境參數的2種方法詳解

maven profile自動切換環境參數的2種方法詳解

2021-04-24 11:41vbirdbest Java教程

這篇文章主要給大家介紹了關于maven profile自動切換環境參數的2種方法,文中通過示例代碼將這兩種方法介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。

前言

痛點:

在java開發的過程中,我們經常要面對各種各樣的環境,比如開發環境,測試環境,正式環境,而這些環境對項目的需求也不相同。

在此之前,我們往往需要手動去修改相對應的配置文件然后打成war,才能部署到相應的環境上。

但是這樣很容易出現問題,因為很容易出現少改或者漏改,造成不必要的麻煩

幻想:

要是有一種東西,能讓我們打war的時候指定一個參數,就能自動把項目編譯成對應環境的war,那該有多幸福?。。?!

結果:這樣的東西還真有,那就是maven-profile

在開發過程中,我們經常會根據不同的環境配置不同的參數,如數據源的ip,username,password、url、秘鑰等都會不同,傳統方式是在一個配置文件中通過修改properties文件中的參數值或者通過注釋解注釋來達到目的,這樣不僅容易出錯,還浪費不必要的時間,更重要的是把代碼發布到測試環境或者生產環境還容易忘記改。為解決這種問題,maven提供了一種解決方案,就是profile。

下圖為傳統方式,需要來回的注釋和解注釋

maven profile自動切換環境參數的2種方法詳解

profile定義的位置

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

filter方式實現

第一步:分別定義application-dev.properties、application-test.properties、application-pro.properties三個文件

application-dev.properties

?
1
2
env.jdbc.username=dev
env.jdbc.password=123456

application-test.properties

?
1
2
env.jdbc.username=test
env.jdbc.password=888888

application-pro.properties

?
1
2
env.jdbc.username=root
env.jdbc.password=666666

第二步:定義總的屬性文件application.properties,該文件中的值去引用application-<env>.properties中的key

application.properties

?
1
2
3
4
5
6
// 引用application-<env>中的key
jdbc.username=${env.jdbc.username}
jdbc.password=${env.jdbc.password}
 
# 公共配置
salt=123456789

第三步:配置profile

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<profiles>
 <profile>
 <!-- 開發環境 -->
 <id>dev</id>
 <properties>
 <env>dev</env>
 </properties>
 <activation>
 <!-- 設置默認激活這個配置 -->
 <activebydefault>true</activebydefault>
 </activation>
 </profile>
 <profile>
 <!-- 測試環境 -->
 <id>test</id>
 <properties>
 <env>test</env>
 </properties>
 </profile>
 <profile>
 <!-- 發布環境 -->
 <id>pro</id>
 <properties>
 <env>pro</env>
 </properties>
 </profile>
 </profiles>

第四步:配置filter和resource

${env}就是在mvn package -p <env>的名字,這樣就告訴application.properties中應用的key是那個屬性文件的key了

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<build>
 <finalname>profile-app</finalname>
 <!-- 定義了變量配置文件的地址 -->
 <filters>
 <filter>src/main/resources/config/application/application-${env}.properties</filter>
 </filters>
 
 <resources>
 <resource>
 <directory>src/main/resources</directory>
 <filtering>true</filtering>
 </resource>
 </resources>
 
 <plugins>
 <plugin>
 <groupid>org.apache.maven.plugins</groupid>
 <artifactid>maven-war-plugin</artifactid>
 </plugin>
 </plugins>
 </build>

打包運行

?
1
2
3
4
5
// 如果不指定環境,默認是activebydefault=true的環境,當前是指開發環境
mvn package
 
// 打包指定的環境通過-p 參數,注意p是大寫的
mvn package -p <env>

maven profile自動切換環境參數的2種方法詳解

從mvn packege -p test運行的結果中可以看到生成的target目錄下classes/application.perperties中的jdbc.username和jdbc.password 就是application-test.properties中配置的env.jdbc.username和env.jdbc.password的值。

在spring中如果要使用屬性配置文件,直接引入這個總的配置文件即可,其他的環境配置文件的使命已經結束了。
<context:property-placeholder location="classpath:application.properties"/>

實現原理:

在pom.xml中為每個不同的環境定義不同的profile,每個profile都有一個環境名稱,然后為不同環境定義不同的配置文件(如application-<env>.properties), 再定義一個總的屬性文件(如application.properties), 然后讓application.properties的value去引用application-<env>.properties中對應的key,在打包時指定要打包的環境的名稱即可,這樣application.properties中的key的值就是相對應環境application-<env>.properties對應的值了。

多resource實現方式

步驟

第一步:在src/main/resource創建一個env目錄,再創建各個環境的子目錄,再再各個環境子目錄下創建名為config.properties的文件,每個鍵相同,值不同。
env/dev/config.properties

?
1
2
jdbc.username=dev
jdbc.password=123456

env/test/config.properties

?
1
2
jdbc.username=test
jdbc.password=888888

env/pro/config.properties

?
1
2
jdbc.username=root
jdbc.password=666666

第二步:創建一個與環境無關的application.properties

application.properties

?
1
2
# 公共配置
salt=123456789

第三步:配置profiles

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<profiles>
 <profile>
 <!-- 開發環境 -->
 <id>dev</id>
 <properties>
 <env>dev</env>
 </properties>
 <activation>
 <!-- 設置默認激活這個配置 -->
 <activebydefault>true</activebydefault>
 </activation>
 </profile>
 <profile>
 <!-- 測試環境 -->
 <id>test</id>
 <properties>
 <env>test</env>
 </properties>
 </profile>
 <profile>
 <!-- 發布環境 -->
 <id>pro</id>
 <properties>
 <env>pro</env>
 </properties>
 </profile>
</profiles>

第四步:配置resource

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<build>
 <finalname>profile-app</finalname>
 <!-- 定義了變量配置文件的地址 -->
 <resources>
 <resource>
 <directory>src/main/resources</directory>
 <excludes>
 <exclude>env/dev/*</exclude>
 <exclude>env/test/*</exclude>
 <exclude>env/pro/*</exclude>
 </excludes>
 <filtering>true</filtering>
 </resource>
 <resource>
 <directory>src/main/resources/env/${env}</directory>
 <includes>
 <include>*.*</include>
 <include>**/*.xml</include>
 <include>**/*.properties</include>
 </includes>
 <filtering>true</filtering>
 </resource>
 </resources>
 
 <plugins>
 <plugin>
 <groupid>org.apache.maven.plugins</groupid>
 <artifactid>maven-war-plugin</artifactid>
 </plugin>
 </plugins>
</build>

第五步:運行 mvn package -p test

maven profile自動切換環境參數的2種方法詳解

如果經常使用mvn package -p <env>可以在idea中配置一些maven, 步驟為:edit configurations… —– + —- maven —- 分別為每個環境添加maven 命令,以后雙擊run configureations中的任意一個就是相當于運行mvn package -p <env>命令了

maven profile自動切換環境參數的2種方法詳解

maven profile自動切換環境參數的2種方法詳解

兩種方式比較

filter方式會把所有的application-dev.properties、application-test.properties、application-pro.properties文件都會打包進去,而且此種方式只能針對屬性文件,如果有其他文件(如.xml)也根據不同的環境有不同的配置,這種方式是不好處理。

多resource方式在打包時只打包指定環境的配置文件,可以將各種文件放到各自的環境文件夾中,在打包的時候會將整個文件夾都打包進去。推薦此種方式

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對服務器之家的支持。

原文鏈接:https://blog.csdn.net/vbirdbest/article/details/78744786

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 毛片免费观看视频 | 欧美国产在线观看 | 特黄特色的大片观看免费视频 | 成人精品三级av在线看 | 懂色av成人一区二区三区 | 四色成人av永久网址 | 久久这里只有精品8 | 精品一二三区 | 在线观看av网站永久 | 日韩三级观看 | 亚洲精品一区二区三区在线观看 | 亚洲精品成人免费 | 综合色成人 | 免费成人高清在线视频 | 久久久久国产一级毛片高清片 | 久久精品国产一区二区三区 | 欧美国产日韩一区 | 精品在线一区二区 | www一区二区| 依人网站| 中文字幕免费中文 | 久久久精品久久久 | 自拍偷拍亚洲一区 | 精品国产一区二区三区在线观看 | 欧美一区二区三区视频在线 | 高清视频一区 | 亚洲精品一区二区三区在线观看 | 国产成人一级毛片 | 黄色片免费看 | 国产美女在线观看 | 中文字幕视频在线观看 | 一特黄a大片免费视频 视频 | 国产精品福利在线观看 | 成人综合网站 | 成人精品一区二区三区视频播放 | 99国产精品99久久久久久 | www.欧美| 日韩高清在线一区 | 精品www| 中文字幕视频一区 | 成人刺激视频在线 |