1. 程式人生 > >Maven使用多環境配置

Maven使用多環境配置

在工作中,我們經常遇到多環境需要不同的配置檔案,例如不同環境下連線的資料庫不一致。
spring boot專案中可以較為方便的整合,那麼在傳統的spring web專案中應該如何解決這個問題呢,下面我們嘗試使用maven的filter進行處理不同環境的變數值。

配置pom檔案

  • 為pom檔案新增profile的配置
 <profiles>
    <profile>
      <id>local</id>
      <activation>
        <activeByDefault>true</activeByDefault
>
</activation> <properties> <env>local</env> </properties> </profile> <profile> <id>development</id> <properties> <env>development</env> </properties> </profile
>
<profile> <id>test</id> <properties> <env>test</env> </properties> </profile> <profile> <id>production</id> <properties> <env>production</env> </properties
>
</profile> </profiles>

在本段程式碼中,我們將local設定為預設的環境變數,那麼在我們打包的過程中如果不置頂環境變數,maven將按照預設的local形式進行打包。我們為每個profile設定了一個env的變數值,該值可以讓我們在其他部分配置直接引用。

  • 配置filter
    <filters>
        <filter>src/main/resource/${env}/application.properties</filter>
    </filters>

通過filter,我們可以將不同環境目錄下的application.properties檔案中的引數值載入到maven中,如果我們有多個properties可以在新增一個filter即可。

  • 配置resources
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
                <excludes>
                    <exclude>local/*</exclude>
                    <exclude>development/*</exclude>
                    <exclude>test/*</exclude>
                    <exclude>production/*</exclude>
                </excludes>
            </resource>
        </resources>

通過指定filtering表示該目錄下的檔案都將通過maven的過濾進行變數值的替換,並且我們將原始碼中的多環境目錄進行排除,在maven編譯生成的目錄將不會帶目錄檔案。

配置application.properties檔案

在src/main/resources/目錄下新建一個application.properties,並新增內容

test.properties[email protected].properties@

此處的@[email protected]為通過fileter篩選各自環境下的加入到maven的變數值。
例如src/main/resources/production/applicaiton.properties檔案內容為:

test.properties=production

maven在編譯的過程中會替換 @[email protected]為production,最終生成的application.properties檔案內容應該為:

test.properties=production

通過上面的講解和程式碼配置,我們完成了maven多環境變數的配置工作,接下來我們來使用maven編譯試試?

  • 通過命令進行打包
mvn clean compile  -Pproduction
  • 檢視目錄檔案生成情況

image.png

常見問題

maven在替換變數的時候,預設{]和@@表示式均可替換,如果我們在spring 的xml配置檔案中使用{} 也會被maven替換掉,為了避免該問題,我們可以參考spring boot的parent中的xml進行配置

 <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-resources-plugin</artifactId>
    <version>2.6</version>
    <configuration>
    <delimiters>
    <delimiter>@</delimiter>
    </delimiters>
    <useDefaultDelimiters>false</useDefaultDelimiters>
    </configuration>
</plugin>

重點是delimiter的配置,該配置主要配置變數的分隔符,我們配置為@,那麼它就不會對${}產生作用了,具體說明可以參考maven的官方文件 maven delimiters

結語

通過上面的展示,想必我們都已經學會使用maven的多環境配置了,本段的demo我也傳到github上,大家可以自行檢視具體源代 —– github原始碼

相關推薦

springboot maven 環境配置 jenking構建釋出配置

在後端開發中,應用程式在不同的環境可能會有不同的配置,例如資料庫連線、日誌級別等,開發,測試,生產每個環境可能配置都不一致。 使用Spring Boot的Profile可以實現多場景下的配置切換,方便開發中進行測試和部署生產環境。 下面就大致介紹一下yml配置檔案跟properties配置檔案怎

使用Maven環境配置打包和部署

基本每個專案都會有開發環境(本地環境)、開發整合環境、測試環境、預釋出環境、正式環境。 最少也有開發環境(本地環境)、測試環境、生產環境3個環境,每個環境的配置是不一樣的,如果每次打包都手動修改配置檔案,工作量大且容易出錯。 所以這個時候就可以考慮使用mav

maven環境配置及檔案命名

網上有很多相關的配置的部落格,都比較零散。找到了可以用的方案,測試有效,做記錄備份~ 專案中很多配置項,全部彙總到resources/properties目錄下,但是測試環境和生產環境的專案需要的配置檔案是不一樣的,每次打包部署不可能還修改配置檔案,因此想到偷懶。 包含兩個效

Spring-boot與maven環境配置檔案設定

通常在開發時,不同的環境有不同的配置引數,通常會使用maven profile來選擇不同環境的配置檔案。下面介紹spring-boot專案如何與maven結合,來根據環境選擇不通的配置引數。 建立屬性配置檔案 首先為不同的環境配置不同的屬性配置檔案,命名

Maven 環境配置檔案管理

通常,專案在生產環境跟開發環境中,配置引數多少會有一點差異,比如:日誌路徑、資料庫地址等等。所以每次打生產環境的包,需要修改一些配置檔案,如果手工修改配置檔案的話,就太浪費人力物力,而且還容易手滑改錯。 實際開發中需要根據不同環境將資源分別存放,構建部署包的時

maven環境配置打包(自定義properties)

專案開發經常碰到配置檔案中測試的jdbc.url和線上的是不一樣的。為此每次打包都要修改配置檔案,很煩,而且也容易出錯。 最近才發現,原來用maven的profile可以實現多種環境的配置。 1、在src/main/resources/filters,建兩個檔案:test.

SpringBoot初識(四)——Maven環境配置

Maven多環境有什麼好處     在日常專案開發中,我們經常需要在開發環境、測試環境、生產環境等情況下進行專案的部署,對於配置檔案來說,如果無法識別各個環境,就意味著當我們在進行開發時,需要將配置檔案的內容更改為測試環境,而在進行生產部署時,又需要將其內容改

maven 環境配置

pom.xml 檔案 節點下新增檔案 <profiles> <profile> <id>dev</id> <!-- dev 隨便起名字 和dev.prope

maven 環境配置屬性檔案

在開發過程中,我們的軟體會面對不同的執行環境,比如開發環境、測試環境、生產環境,而我們的軟體在不同的環境中,有的配置可能會不一樣,比如資料庫配置檔案、屬性檔案等等。     使用maven來實現多環境的構建可移植性,需要藉助maven提供的profile功能,通過

maven環境配置總結

開發十年,就只剩下這套架構體系了! >>>   

使用maven profile實現環境配置相關打包

本地 ces 軟件測試 測試 project oca rect fault uil 項目開發需要有多個環境,一般為開發,測試,預發,正式4個環境,通過maven可以實現按不同環境進行打包部署,命令為: mvn package -P dev 在eclipse中可以右擊選項r

Maven 進行環境配置,使用profile檔案進行配置

說明:Spring和Maven都可以進行profile配置多環境,這裡只介紹Maven進行管理。我的開發環境:eclipse+maven 檔案結構目錄:     步驟: 一、在pom.xml檔案中,新增如下: <profiles> <pr

Maven使用環境配置

在工作中,我們經常遇到多環境需要不同的配置檔案,例如不同環境下連線的資料庫不一致。 在spring boot專案中可以較為方便的整合,那麼在傳統的spring web專案中應該如何解決這個問題呢,下面我們嘗試使用maven的filter進行處理不同環境的變數值

spring boot通過maven filter替換properties屬性(環境配置

這兩天專案到了差不多收尾了,想把各種環境配置通過maven filter在maven打包的時候就替換掉properties的配置。之前一直用${my.properies}的方式,打包了以後就是替換不掉properties裡的屬性。 這是我的maven filt

dubbo服務使用maven部署(支援profile環境配置

部署dubbo服務通常有三種方式:1、打war包,放在tomcat中執行,缺點:增加複雜性(埠、管理) 浪費資源(記憶體)官方:服務容器是一個standalone的啟動程式,因為後臺服務不需要Tomcat或JBoss等Web容器的功能,如果硬要用Web容器去載入服務提供方,增

maven profile實現環境配置

每次專案部署上線都需要手動去修改配置檔案(比如資料庫配置)然後才能打包,很不方便,可以根據以下教程用maven的profile 實現多環境的配置。 以資料庫的配置為例,在src/main/resources 下新建三個資料夾,分別叫做dev,online,test,分別對應

Maven實現環境配置切換

一. 問題由來         開發環境、測試環境、生產環境--------我們的軟體在不同的環境中,系統引數和配置可能會不一樣,比如資料來源配置、日誌檔案配置、以及一些軟體執行過程中的基本配置,那每次我們將軟體部署到不同的環境時,都需要

spring-boot實戰【05】:Spring Boo環境配置配置屬性註入到對象

num java red component 配置 cati 定義 fin row 項目工程結構: 配置文件application.properties文件 com.yucong.blog.name=yucong com.yucong.blog.title=Spring

Maven 環境 打包

runt pom run div pan conf logs spa cnblogs 1.pom.xml文件添加profiles屬性 <profiles> <profile> <id>dev<