欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

maven profile動態(tài)選擇配置文件詳解

 更新時間:2019年11月04日 09:49:28   作者:WhyWin  
這篇文章主要介紹了maven profile動態(tài)選擇配置文件詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

一、背景

在開發(fā)過程中,我們的軟件會面對不同的運行環(huán)境,比如開發(fā)環(huán)境、測試環(huán)境、生產(chǎn)環(huán)境,而我們的軟件在不同的環(huán)境中,有的配置可能會不一樣,比如數(shù)據(jù)源配置、日志文件配置、以及一些軟件運行過程中的基本配置,那每次我們將軟件部署到不同的環(huán)境時,都需要修改相應(yīng)的配置文件,這樣來回修改,很容易出錯,而且浪費勞動力。

maven提供了一種方便的解決這種問題的方案,就是profile功能。

二、profile簡介

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

profile定義的位置

(1)針對于特定項目的profile配置我們可以定義在該項目的pom.xml中。(下面舉例是這種方式)

(2) 針對于特定用戶的profile配置,我們可以在用戶的settings.xml文件中定義profile。該文件在用戶家目錄下的“.m2”目錄下。

(3)全局的profile配置。全局的profile是定義在Maven安裝目錄下的“conf/settings.xml”文件中的。

三、配置動態(tài)打包

1、配置profile

在項目的profile中添加如下的profile配置:

<profiles>
  <profile>
    <!-- 本地開發(fā)環(huán)境 -->
    <id>dev</id>
    <properties>
      <profiles.active>dev</profiles.active>
    </properties>
    <activation>
      <!-- 設(shè)置默認(rèn)激活這個配置 -->
      <activeByDefault>true</activeByDefault>
    </activation>
  </profile>
  <profile>
    <!-- 發(fā)布環(huán)境 -->
    <id>release</id>
    <properties>
      <profiles.active>release</profiles.active>
    </properties>
  </profile>
  <profile>
    <!-- 測試環(huán)境 -->
    <id>beta</id>
    <properties>
      <profiles.active>beta</profiles.active>
    </properties>
  </profile>
</profiles> 

這里定義了三個環(huán)境,分別是dev(開發(fā)環(huán)境)、beta(測試環(huán)境)、release(發(fā)布環(huán)境),其中開發(fā)環(huán)境是默認(rèn)激活的(activeByDefault為true),這樣如果在不指定profile時默認(rèn)是開發(fā)環(huán)境,也在package的時候顯示指定你要選擇哪個開發(fā)環(huán)境,詳情見后面。

2、配置文件

針對不同的環(huán)境,我們定義了不同的配置文件,文件目錄如下:

如圖所示,開發(fā)環(huán)境、測試環(huán)境、生產(chǎn)環(huán)境的配置文件分別放到src/main/resources目錄下的config文件夾下。

config下有多個環(huán)境的配置文件,命名規(guī)則為是application-環(huán)境名稱.properties。

處理過程:

1)通過profile選中你要使用的環(huán)境

2)通過package命令,將環(huán)境變量注入到application.properties中(這樣子,那些公用的環(huán)境變量就不用在各個環(huán)境的配置文件中配置了)

3)項目中加載application.xml文件

加載配置文件

<context:property-placeholder location="classpath:application.properties"/>

例子:

application-beta.properties文件有如下部分內(nèi)容:

env.datasource.jdbcUrl=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&autoReconnect=true&zeroDateTimeBehavior=round
env.datasource.username=root
env.datasource.password=12233

application.properties有部分如下內(nèi)容用于注入上面的內(nèi)容:

datasource.jdbcUrl=${env.datasource.jdbcUrl}
datasource.username=${env.datasource.username}
datasource.password=${env.datasource.password}

3、maven資源插件配置

在pom.xml的build結(jié)點下,配置資源文件的位置,如下所示:

<build>
    <finalName>seewo-admin</finalName>
    <!-- 定義了變量配置文件的地址 -->
    <filters>
      <filter>src/main/resources/config/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>

這里注意一個參數(shù)<filtering>true</filtering>,一定要設(shè)置成true.這樣才會用對應(yīng)env目錄下的配置文件覆蓋原來的。

4、激活profile

1)默認(rèn)的激活

上面的profile配置中設(shè)置的默認(rèn)的激活環(huán)境。如下面所示

<activeByDefault>true</activeByDefault> 

2)使用-P參數(shù)顯示激活一個profile

當(dāng)我們在進(jìn)行Maven操作時就可以使用-P參數(shù)顯示的指定當(dāng)前激活的是哪一個profile了。比如我們需要在對項目進(jìn)行打包的時候使用id為dev的profile,我們就可以這樣做:

mvn package –Pdev

這里假設(shè)dev是在settings.xml中使用dev標(biāo)記的處于激活狀態(tài)的profile,那么當(dāng)我們使用“-P !profile”的時候就表示在當(dāng)前操作中該profile將不處于激活狀態(tài)。

5、調(diào)用

private Logger logger = LogManager.getLogger(MyApp.class.getName());

其他的使用和log4j的是一樣的。

四、遇到的坑

在application.xml文件中不能出現(xiàn)@關(guān)鍵字,就算你注釋了也不行。當(dāng)出現(xiàn)@了,之后的所有環(huán)境變量將不會被注入

如:

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python中scrapy框架的ltem和scrapy.Request詳解

    Python中scrapy框架的ltem和scrapy.Request詳解

    這篇文章主要介紹了Python中scrapy框架的ltem和scrapy.Request詳解,Item是保存爬取數(shù)據(jù)的容器,它的使用方法和字典類似,不過,相比字典,Item提供了額外的保護(hù)機(jī)制,可以避免拼寫錯誤或者定義字段錯誤,需要的朋友可以參考下
    2023-09-09
  • java實現(xiàn)大文件導(dǎo)出的實現(xiàn)與優(yōu)化

    java實現(xiàn)大文件導(dǎo)出的實現(xiàn)與優(yōu)化

    這篇文章主要為大家詳細(xì)介紹了java實現(xiàn)大文件導(dǎo)出的實現(xiàn)與優(yōu)化的相關(guān)資料,文中的示例代碼講解詳細(xì),對我們深入了解java有一定的幫助,感興趣的小伙伴可以了解下
    2023-11-11
  • Java基本數(shù)據(jù)類型與封裝類型詳解(int和Integer區(qū)別)

    Java基本數(shù)據(jù)類型與封裝類型詳解(int和Integer區(qū)別)

    這篇文章主要介紹了Java基本數(shù)據(jù)類型與封裝類型詳解(int和Integer區(qū)別) ,需要的朋友可以參考下
    2017-02-02
  • Java實現(xiàn)紀(jì)元秒和本地日期時間互換的方法【經(jīng)典實例】

    Java實現(xiàn)紀(jì)元秒和本地日期時間互換的方法【經(jīng)典實例】

    這篇文章主要介紹了Java實現(xiàn)紀(jì)元秒和本地日期時間互換的方法,結(jié)合具體實例形式分析了Java日期時間相關(guān)操作技巧,需要的朋友可以參考下
    2017-04-04
  • Java基于redis和mysql實現(xiàn)簡單的秒殺(附demo)

    Java基于redis和mysql實現(xiàn)簡單的秒殺(附demo)

    這篇文章主要介紹了Java基于redis和mysql實現(xiàn)簡單的秒殺(附demo),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • 詳解spring cloud hystrix請求緩存(request cache)

    詳解spring cloud hystrix請求緩存(request cache)

    這篇文章主要介紹了詳解spring cloud hystrix請求緩存(request cache),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • Java 中的 xx ≠ null 是什么新語法

    Java 中的 xx ≠ null 是什么新語法

    Java中null是一個關(guān)鍵字,用來標(biāo)識一個不確定的對象。因此可以將null賦給引用類型變量,但不可以將null賦給基本類型變量。本文給大家分享Java 中的 xx ≠ null 是什么新語法,感興趣的朋友一起看看吧
    2021-06-06
  • java實習(xí)--每天打卡十道面試題!

    java實習(xí)--每天打卡十道面試題!

    臨近秋招,備戰(zhàn)暑期實習(xí),祝大家每天進(jìn)步億點點!本篇文章準(zhǔn)備了十道java的常用面試題,希望能夠給大家提供幫助,最后祝大家面試成功,進(jìn)入自己心儀的大廠
    2021-06-06
  • Spring?Boot中常用的參數(shù)傳遞注解示例詳解

    Spring?Boot中常用的參數(shù)傳遞注解示例詳解

    這篇文章主要介紹了Spring?Boot中常用的參數(shù)傳遞注解,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-11-11
  • Java8 HashMap擴(kuò)容算法實例解析

    Java8 HashMap擴(kuò)容算法實例解析

    這篇文章主要介紹了Java8 HashMap擴(kuò)容算法實例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-12-12

最新評論