我們正在開發(fā)一個(gè)Spring Boot Web應(yīng)用程序,正在使用的數(shù)據(jù)庫是MySql;我們擁有的設(shè)置是我們首先在本地對(duì)其進(jìn)行測試(意味著我們需要在PC上安裝MySql);然后我們推向Bitbucket ;Jenkins自動(dòng)檢測到對(duì)Bitbucket的新推送并在其上進(jìn)行構(gòu)建(要使Jenkins mvn構(gòu)建通過,我們還需要在運(yùn)行Jenkins的虛擬機(jī)上安裝MySql)。如果Jenkins構(gòu)建通過,我們會(huì)將代碼推送到OpenShift上的應(yīng)用程序(使用Jenkins上的Openshift部署插件)。我們的問題,因?yàn)槟憧赡芤呀?jīng)想通了就是:在application.properties我們不能對(duì)MySql信息進(jìn)行硬編碼。由于我們的項(xiàng)目將在3個(gè)不同的地方(local,Jenkins和OpenShift)運(yùn)行,因此我們需要使數(shù)據(jù)源字段動(dòng)態(tài)化application.properties(我們知道這樣做的方式不同,但目前正在研究此解決方案)。spring.datasource.url = spring.datasource.username = spring.datasource.password = 我們想到的解決方案是在本地和Jenkins vm中創(chuàng)建系統(tǒng)環(huán)境變量(以O(shè)penShift命名它們的方式命名),并分別為其分配正確的值:export OPENSHIFT_MYSQL_DB_HOST="jdbc:mysql://localhost"export OPENSHIFT_MYSQL_DB_PORT="3306"export OPENSHIFT_MYSQL_DB_USERNAME="root"export OPENSHIFT_MYSQL_DB_PASSWORD="123asd"我們已經(jīng)做到了,而且行得通。我們還檢查了Map<String, String> env = System.getenv();是否可以將環(huán)境變量設(shè)置為java變量,如下所示:String password = env.get("OPENSHIFT_MYSQL_DB_PASSWORD"); String userName = env.get("OPENSHIFT_MYSQL_DB_USERNAME"); String sqlURL = env.get("OPENSHIFT_MYSQL_DB_HOST"); String sqlPort = env.get("OPENSHIFT_MYSQL_DB_PORT");現(xiàn)在剩下的唯一事情就是我們需要在我們的程序中使用這些java變量application.properties,這就是我們遇到的麻煩。在哪個(gè)文件夾,以及我們?nèi)绾?,需要分配password,userName,sqlURL,和sqlPort變量application.properties能夠看到他們,我們?nèi)绾螌⑺鼈儼赼pplication.properties?我們嘗試了許多事情,其中之一是:spring.datasource.url = ${sqlURL}:${sqlPort}/"nameofDB"spring.datasource.username = ${userName}spring.datasource.password = ${password}到目前為止沒有運(yùn)氣。我們可能沒有將這些env變量放在正確的類/文件夾中,或者在中錯(cuò)誤地使用了它們application.properties。非常感謝您的幫助??!謝謝!
在Spring Boot的application.properties中使用env變量
慕斯709654
2019-10-15 09:55:37