1. 程式人生 > >使用maven的profile切換專案各環境的引數

使用maven的profile切換專案各環境的引數

http://blog.csdn.net/massivestars/article/details/53510586

 maven預設的執行環境是test,我打包的時候怎麼樣才能切換到生產環境 



在實際開發專案中,常常有幾種環境,一般情況下最少有三種環境:開發測試正式。

各個環境之間的引數各不相同,比如MySQLRedis等不同環境的host不一樣,若每個環境都手動替換環境很容易出錯,這裡我們利用maven的profile功能切換環境。

本文的專案結構圖:


src/main/resources/dev  目錄的properties是開發環境的配置專案 src/main/resources/test  目錄的properties是測試環境的配置專案 在pom.xml定義環境的profile [html]
 view plain copy  print?
  1. <profiles>
  2.     <profile>
  3.         <id>dev</id>
  4.         <properties>
  5.             <profiles.activation>dev</profiles.activation>
  6.         </properties>
  7.         <activation>
  8.             <activeByDefault>true</activeByDefault
    >
  9.         </activation>
  10.     </profile>
  11.     <profile>
  12.         <id>test</id>
  13.         <properties>
  14.             <profiles.activation>test</profiles.activation>
  15.         </properties>
  16.     </profile>
  17. </profiles>
activeByDefault標籤的值為true的話表示預設的profile,使用mvn install命令起作用的就是它,這裡為dev resources標籤定義要包含的資源,在下面的配置下package階段會把resources資料夾裡的 ${profiles.activation}/* 檔案打包 這裡的${profiles.activation}由命令maven的-P選項指定,例:mvn install -Ptest 就是打包 test/* 即test目錄下的所有檔案  [html]
 view plain copy  print?
  1. <resources>
  2.     <resource>
  3.         <directory>src/main/resources</directory>
  4.         <!-- **/*.properties 是指包括根目錄或子目錄所有properties型別的檔案 -->
  5.         <includes>
  6.             <include>**/*.properties</include>
  7.             <include>**/*.xml</include>
  8.         </includes>
  9.         <!-- 排除dev、test目錄下的檔案 -->
  10.         <excludes>
  11.             <exclude>dev/*</exclude>
  12.             <exclude>test/*</exclude>
  13.         </excludes>
  14.     </resource>
  15.     <resource>
  16.         <directory>src/main/resources</directory>
  17.         <!-- 包含,若沒有指定則預設為 activeByDefault 標籤定義的profile -->
  18.         <includes>
  19.             <include>${profiles.activation}/*</include>
  20.         </includes>
  21.     </resource>
  22. </resources>


applicationContext.xml檔案如下 [html] view plain copy  print?
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <beansxmlns="http://www.springframework.org/schema/beans"
  3.        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4.        xmlns:context="http://www.springframework.org/schema/context"
  5.        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
  6.         http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd" default-autowire="byType">
  7.     <!-- Annotation Config -->
  8.     <context:annotation-config/>
  9.     <!-- 取${profiles.activation:dev}表示取${profiles.activation}的值,若沒有則指定dev -->
  10.     <beanid="propertyConfig"
  11.           class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  12.         <propertyname="locations">
  13.             <list>
  14.                 <value>classpath:${profiles.activation:dev}/jdbc.properties</value>
  15.             </list>
  16.         </property>
  17.     </bean>
  18.     <!-- ==============配置資料來源============== -->
  19.     <beanid="dataSource"class="com.alibaba.druid.pool.DruidDataSource"init-method="init"destroy-method="close">
  20.         <!-- 基本屬性 url、user、password -->
  21.         <propertyname="url"value="${jdbc.url}"/>
  22.         <propertyname="username"value="${jdbc.username}"/>
  23.         <propertyname="password"value="${jdbc.password}"/>
  24.         <!-- 配置初始化大小、最小、最大 -->
  25.         <propertyname="initialSize"value="1"/>
  26.         <propertyname="minIdle"value="1"/>
  27.         <propertyname="maxActive"value="20"/>
  28.         <!-- 配置獲取連線等待超時的時間 -->
  29.         <propertyname="maxWait"value="60000"/>
  30.         <!-- 配置間隔多久才進行一次檢測,檢測需要關閉的空閒連線,單位是毫秒 -->
  31.         <propertyname="timeBetweenEvictionRunsMillis"value="60000"/>
  32.         <!-- 配置一個連線在池中最小生存的時間,單位是毫秒 -->
  33.         <propertyname="minEvictableIdleTimeMillis"value="300000"/>
  34.     </bean>
  35. </beans>

這裡取${profiles.activation:dev}是取${profiles.activation}的值,若不存在,則預設為dev; 若值為dev,locations的值為classpath:dev/jdbc.properties。 ${profiles.activation}是在web.xml裡的context-param取值 [html] view plain copy  print?
  1. <context-param>
  2.     <param-name

    相關推薦

    使用maven的profile切換專案環境引數

    http://blog.csdn.net/massivestars/article/details/53510586  maven預設的執行環境是test,我打包的時候怎麼樣才能切換到生產環境  在實際開發專案中,常常有幾種環境,一般情況下最少有三種

    axios服務封裝,可用於任何支援axios的專案中,包括react和vue都可通用。get/post請求,以及併發請求。以及導航欄隨意切換測試/正式環境

    任何專案,只要支援axios,那麼你只要把我現在封裝的服務整個資料夾考過去即可。這個原本是我封裝在vue裡的,但是有一天公司突然來一個緊急的H5微信分享活動的專案,我當時用react搭建(zepto+node搭建其實最好)也是為了挑戰一下自己,畢竟只有三天時間。所以當我把很多vue裡封裝的東西直

    maven profile自動切換環境引數的兩種實現方式

    簡介 在開發過程中,我們經常會根據不同的環境配置不同的引數,如資料來源的ip,username,password、url、祕鑰等都會不同,傳統方式是在一個配置檔案中通過修改properties檔案中的引數值或者通過註釋解註釋來達到目的,這樣不僅容易出錯,還浪費

    專案從開發環境切換到生產環境,介面就不能呼叫了

    今天遇到一個小坑,問題不到,但是有意思, 一般測試測bug都是在開發環境上,測試沒問題了,再切換到生產環境測試, 我們可愛的測試小姐姐,今天在生產環境上測了一個在開發環境就測試通過的問題,但是在生產環境卻不行了,甚至連線口都不呼叫!兩個環境的程式碼一模一樣的啊,怎麼到了生產環境介面就不呼叫了

    專案上線-環境切換

    1.環境切換的準備工作 1.1.準備1套測試環境 1.2.準備1套預生產環境 1.3.準備1套生產環境 2.切換流程     2.1.如果沒有線上再跑的服務,直接把測試的環境放到預生產再次測試,通過就

    【Java】SpringMVC專案正式環境測試環境切換方案

    之前同事在專案裡面正式環境測試環境配置檔案都放在一起,每次釋出都得註釋一部分,讓另一部分啟用,隨著配置檔案內容的越來越多,很容易在釋出時候出錯,我摸索了半天實驗出來一個方案,可供大家參考。本方案基於maven的spring.profiles.active功能,用的最簡單粗暴方

    對文件存儲的輕量封裝,屏蔽不同雲環境api差異,方便開發和部署時隨意切換存儲環境

    clas -c iyu public baseurl config 開發 wpc autoload 文件存儲 安裝 composer require pfinal/storage 本地存儲 Local 阿裏雲 AliOss 請先 composer requir

    selenium添加cookie切換到不同環境

    font coo dom ons hole ros java -1 class 背景:網站中需要切環境到預發布,在用谷歌瀏覽器可以使用工具,但是在selenium啟動時,是不會帶任何插件,向開發了解下,切換環境本質是添加cookie值,那麽這個就簡單了 1.使用seleni

    獲取環境下的頁面尺寸信息

    turn scrollto js代碼 bubuko mode The fin 技術 cti js代碼 //獲取各環境下的頁面尺寸信息 function GetPageSize() { var scrW, scrH; if(window.innerHeigh

    同一個hdfs客戶端 切換不同叢集環境

    是通過兩個配置檔案來切換到不同叢集環境的, hdfs-site.xml和core-site.xml   現在我建立兩個目錄: ~/dev/hadoop 開發環境目錄 ~/prod/hadoop 產品環境目錄 好了,現在我把開發環境叢集的core-site.xml和h

    Android 獲取 上下文環境引數 getResources

    1----context.getResources().getConfiguration().orientation;//獲取螢幕方向int型別,1:portrait,2:landscape 2---把資原始檔放到應用程式的/raw/raw下,以openRawResource方法(不帶字尾的資原始檔名)開啟

    Python程式設計:pipenv管理專案虛擬環境

    專案地址:https://github.com/pypa/pipenv 安裝 $ pip install pipenv 使用 在專案根目錄執行以下語句,常用命令如下 $ pipenv install # 初始化環境 $ pipenv install reque

    專案beta環境部署申請

    概述   B對A提交的功能程式碼做完alpha測試以後,A就可以向運維D提交beta環境部署申請了,審批流程以及稽核人關係如下所示:   (1)、功能開發人員A基於beta環境部署申請流程建立具體的xxx功能beta環境部署申請,並在申請單附件中詳細描述本次部署涉

    易學筆記-第2章:spring中的Bean/2.6 環境引數和佔位符

    第2章:spring中的Bean/2.6 環境引數和佔位符/2.6.1 環境引數/2.6.1.1 概念 概念與設定 指的是為了區分不同的環境而設定的引數,比如開發環境和生產環境   第2章:spring中的Bean/2.6 環境引數和佔

    PMBOK(第六版) PMP筆記——《三》第二章 專案運作環境

    事業環境因素、組織過程資產 1 、 事業環境因素 Enterprise Environmental Factors:是專案團隊不能控制的,將對專案 產生影響、限制或指令作用的各種條件。可能提高或限制專案管理的靈活性,也可能對專案 結果產生積極或消極影響。 包括: 1)組織文化、結構和治理;

    tomcat 配置了jvm的環境引數未生效

    以linux環境為例 1.檢視 catalina.sh檔案 增加配置:JAVA_OPTS="-Xms1024m -Xmx4096m -Xss1024K -XX:PermSize=512m -XX:MaxPermSize=2048m "  2.正常增加如上配置即可 3.

    Python :Pycharm初始建立專案環境搭建,你足夠了解嗎?

    Pycharm確實是一個非常不錯的Python開發IDE,尤其對於初學者而言。 開啟新建專案 1.選擇新建一個Pure Python專案,新建專案路徑可以在Location處選擇。 2.Project Interpreter部分是選擇新建專案所依賴的python庫,第一

    Python 專案隔離環境virtualenv--venv

      virtualenv 用來為一個應用建立一套“隔離”的python執行環境。 先安裝virtualenv: pip3 install virtualenv 再進入專案目錄,或者建立一個專案目錄並進入,建立一個獨立的python執行環境,命名為venv: virtuale

    針對SpringBoot專案中的引數傳遞使用RSA加密機制保證安全性進行封裝成工具

    spring-boot-starter-security 1 概述 針對SpringBoot專案中的引數傳遞使用RSA加密機制保證安全性進行封裝成工具,實現自動加密返回資料、解密傳入資料並對映成json 2 使用  這裡的使用就比較簡單了。 (1)將工具匯入專案中。 (

    Ionic專案開發環境初始化

    一.使用Ionic CLI進行專案的初始化構建 1.構建專案 執行npm install -g cordova ionic安裝cordova和ionic外掛 建立一個APPionic start 專案名 tabs 其中tabs是圖示形式(下方圖示