利用MAVEN的profile 實現打包環境的切換

1240
樂哉碼農


產生問題的背景

由于在項目開發的時候,我們一般都是使用的本地庫,數據庫連接寫的是本地的,如果我們將項目打成war的時候,里面的配置連接寫的是我們本地的,當我們直接把war拷貝到服務器上面進行部署的時候,是不可能直接用的,這時候可能會有兩種方法,一、在打包的時候修改數據庫連接,這樣我們就可以直接把war放到服務器上面,二是把壓縮包拷貝到服務器上面,再修改,這樣會給每次進行升級系統帶來麻煩,這同樣就需要一個工具幫我們去解決這些問題了,實現正式和測試環境的切換

引入Maven的profile

首先介紹下profile:

profile就是幫助我們定義一些配置,這些配置都是一套一套的,在特定的情況下動態被激活使用,也可以提供默認的屬性去激活默認的一套profile,

這里主要是通過profiles創建兩套profile和利用filters,resources實現配置文件的覆蓋,實現環境的切換,具體步驟如下

具體實現步驟

一、首先看下默認的數據庫配置文件,配置文件在resources的根目錄下面

1240
數據庫默認配置

二、接著我們復制出兩套配置文件出來

1240
jdbc配置文件


1240
jdbc-product


1240
jdbc-dev

三、配置好數據庫配置文件,我們需要在pom文件中建立對應的兩套profile配置,

1240
兩套profile,

其中的env標簽,是一個環境變量,我們后面會要用到,他有一個默認值是在這里面配置的,默認是dev

1240

配置好上面的兩個profile之后,會在idea面板中看到

1240

四、配置好定義文件之后,我們需要使用filters和resources來實現配置件變量的覆蓋

? ? Ⅰ.首先定義filters來配置使用哪個文件中的變量去替換現有的配置文件中的占位符

1240

這里面的env就是配置的環境變量,這個值隨著我們打包是勾選dev還是product動態改變的,例如和勾選dev.則用jdbc-dev里面的值去替換數據庫配置文件中的占位符,例如 jdbc-dev.properties中有一個? username=lezai,則會將當前項目資源中的文件中帶有${USERNAME}占位符直接使用jdbc-properties中的值替換掉

Ⅱ.替換制定資源的文件中的占位符,使用到resources。直接看配置

1240

配置講解:

①使用resources的includes 將打包是需要的配置文件打包進來,因為我們這里需要進行占位符替換,所以我只導入xml文件,然后將filtering設置為true,意思使用上面定義占位符過濾替換,使其生效,

②使用resources的excludes將第一步驟中排除的非xml文件導進來,但是此時不開啟filtering為true,也就是需要對這些文件的占位符進行替換


五、只需要這幾步就可以在部署系統時進行不同環境的切換,使用方法是打包時勾選不同的profile?

1240

六、配置就這幾步,很輕松的事件了環境的切換,特別注意的是最后一步,首先將需要進行占位符替換的使用includes包進來,并且開始filtering,最后再使用excludes將除了上面的文件包進來,filtering不開啟


感謝大家能看到這里,文中講的不正確的地方,歡迎在下方留言,我會及時修正。

歡迎大家關注我的公眾號,會不定時更新技術干貨。

1240
樂哉碼農

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/537858.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/537858.shtml
英文地址,請注明出處:http://en.pswp.cn/news/537858.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

服務器oracle優化,oracle服務器配置及優化

1.在ORACLE中實現分布式快速存取和充實內存是很重要的。要不惜任何代價避免頁面調度和交換﹐每次都必須把系統全局區(SGA)放到內存。將SGA放到內存中﹐在INIT.ORA中設置參數 PRE_PAGE_SGAPRE_PAGE_SGAYES2.回卷段的竟爭會降低系統的性能。SELECT GETS,WAITS from V$ROLLSTAT;…

Android 常用的數據加密方式

前言 Android 很多場合需要使用到數據加密,比如:本地登錄密碼加密,網絡傳輸數據加密,等。在android 中一般的加密方式有如下: 亦或加密AES加密RSA非對稱加密當然還有其他的方式,這里暫且介紹以上三種加密算…

oracle可以注入嗎,ORACLE 注入

1判斷是什么數據庫and exist(select * from dual)and exists(select * from user_tables)原理:dual表和user_tables表是oracle中的系統表返回正常,那么就可以肯定這是oracle。2查字段數order by 10-- //錯誤,列數小于10order by 3-- //正常,列數等于…

centos升級glibc(升級到 2.17版)

1、原先的系統glibc庫的版本是2.12,需要升級到2.17版本。 下載地址: http://ftp.gnu.org/gnu/glibc/ http://ftp.gnu.org/gnu/glibc/glibc-2.17.tar.gz 這里可以選擇你所需要的版本。 2、安裝部署 [rootkafzook1 common]# tar -xf glibc-2.17.tar.g…

Day31 python基礎--網絡編程基礎-socketserver

一,驗證客戶端合法性 #server端 import os import hmac import socket secret_key balex_sbdef auth(conn):msg os.urandom(32) #生成一個隨機的字符串conn.send(msg) #發送到client端result hmac.new(secret_key,msg) #處理這個隨機字符串,得到一…

康樂php一鍵腳本,kangle一鍵腳本

腳本簡介1、本腳本是可以一鍵安裝kangleEasypanelmysql商業集合腳本。2、腳本本身集成:PHP5.3、PHP5.4、PHP5.5、PHP5.6、PHP7.1、PHP7.2、PHP7.3、MYSQL5.63、支持前臺用戶任意切換PHP5.3-7.3以適應網站程序Kangle一鍵腳本特點1.安裝包內PHP套件以及Kangle套件均已…

oracle data guard方案,Oracle Data Guard 概念篇

一個Data Guard 配置由一個生產庫和一個或者多個standby數據庫組成,在Data Guard配置中,主庫和備庫都既可以是rac環境,也可以是單機環境。這篇文章主要介紹dataguard的一些基本知識dataguard的分類、dataguard的服務類型、dataguard的保護模式…

洛谷P4133 [BJOI2012]最多的方案(記憶化搜索)

題意 題目鏈接 求出把$n$分解為斐波那契數的方案數&#xff0c;方案兩兩不同的定義是分解出來的數不完全相同 Sol 這種題&#xff0c;直接爆搜啊。。。 打表后不難發現$<1e18$的fib數只有88個 最先想到的應該是直接把$n$加入到搜索狀態里&#xff0c;然后枚舉能被分成哪些 但…

centos一鍵安裝redmine

官網給出的環境要求&#xff1a; http://www.redmine.org/projects/redmine/wiki/RedmineInstall#Requirements ------------------------------------------------------------------------------------------------------------- 下載一鍵安裝&#xff1a;&#xff08;下載…

大話php設計模式視頻,大話PHP設計模式

工廠模式用工廠方法或者類來實例化對象&#xff0c;而不是直接new。首先我們需要創建一個工廠類&#xff0c;比如Factory.php。如果不使用工廠模式的&#xff0c;我們需要一個對象的時候通常需要new Inexistence\girlfriend();然而我們一般不只在一個地方需要這個對象&#xff…

Git 2.19 對Diff、Branch和Grep等做了改進

\Git的最新版帶來了豐富的新功能以及內部更新&#xff0c;包括改進的diff、branch和grep&#xff0c;更好的命令行補全&#xff0c;新的range-diff命令等。\\Git diff現在可以正確地標記以intent-to-add參數添加的新文件路徑。intent-to-add可以和git add命令一起使用&#xff…

su oracle c expdp,expdp/impdp 數據泵導入導出

useridtest/test --導出的用戶&#xff0c;本地用戶!!directorydmpfile --導出的邏輯目錄&#xff0c;一定要在oracle中創建完成的&#xff0c;并且給用戶授權讀寫權限dumpfilexx.dmp --導出的數據文件的名稱&#xff0c;如果想在指定的位置的話可以寫…

Centos 升級GLIBCXX3.4.25

32位系統: http://ftp.de.debian.org/debian/pool/main/g/gcc-4.7/libstdc6_4.7.2-5_i386.deb 64位系統: wget http://ftp.de.debian.org/debian/pool/main/g/gcc-8/libstdc6_8.2.0-7_amd64.deb 其他版本 http://ftp.de.debian.org/debian/pool/main/g/ 解壓 ar -x libst…

美團點評基于MGR的CMDB高可用架構搭建之路【轉】

王志朋 美團點評DBA 曾在京東金融擔任DBA&#xff0c;目前就職于美團點評&#xff0c;主要負責金融業務線數據庫及基礎組件數據庫的運維。 MySQL Group Replication&#xff08;以下簡稱MGR&#xff09;&#xff0c;于5.7.17版本正式GA&#xff0c;由Oracle官方出品&#xff0c…

使用 redmind 進行項目任務管理

一、項目經理 1.1、新建任務(工單) 1.2、查看任務狀態 二、團隊成員 2.1、查看任務 作為這個團隊的成員之一&#xff0c;每天開工第一件事便是進入redmine查看“我的工作臺”中自己的任務 2.2、每日反饋任務完成狀態 1、每天開始工作時&#xff0c;及時將任務狀態從“新…

oracle11g創建表空間大文件,oracle11g創建表空間 sql語法

--oracle 11g創建有限制大小的永久表空間--create tablespace test--datafile F:\app\shan\product\11.2.0\dbhome_1\oradata\test.dbf size 1M--autoextend on next 2M maxsize 1024M;--修改表空間大小&#xff1a;--alter database datafile F:\app\shan\product\11.2.0\dbho…

內存泄漏優化

目錄介紹&#xff1a; 1.什么是內存泄漏2.內存泄漏造成什么影響3.內存泄漏檢測的工具有哪些4.關于Leakcanary使用介紹5.Leakcanary捕捉常見的內存泄漏及解決辦法 5.0.1 錯誤使用單例造成的內存泄漏5.0.2 錯誤使用靜態變量&#xff0c;導致引用后無法銷毀5.0.3 [常見]Handler使用…

redmine更換主題

主題列表&#xff1a;http://www.redmine.org/projects/redmine/wiki/Theme_List 雖然有很多主題&#xff0c;但是很多主題都是要錢的&#xff0c;像這類&#xff08;上圖&#xff09;沒有下載地址的&#xff0c;都是要錢的。 含GitHub的下載地址的&#xff0c;是免費可下載的&…

redmine 郵箱配置(阿里云+windows)

說明 密碼是第三方的授權碼&#xff0c;不是郵箱密碼 需要登錄126網頁版&#xff0c;在設置里開啟 smtp 等第三方服務&#xff0c;設置授權碼 阿里云Linux 默認屏蔽25號端口&#xff0c;所以需要開啟ssl&#xff0c;和使用 465 端口 重啟下 redmind sh /opt/redmine-3.4.6-…

linux查看當前用戶終端,Linux----基本命令的使用(vi命令,查看文件內容,顯示進程,切換用戶等)...

1、vi是linux系統上經常使用的一個文本編輯器&#xff0c;其有三種模式&#xff1a;命令模式、編輯模式(插入模式)、末行模式。命令模式——>編輯模式&#xff1a;“i a o I A O”linux編輯模式——>命令模式&#xff1a;“ESC”shell命令模式——>末行模式&#xff1…