問題描述
在使用Maven和Gradle插件生成,獨立運行的SpringBoot Jar 的之後,在類Unix的系統中,可以直接的通過 ./myapp.jar
的方式運行,但是如何去指定 -D 屬性呢?例如
-Dspring.profiles.active=test
解決方案
本文介紹解決的思路有如下三種:
- 同可獨立執行的Jar同目錄下,定義一個配置文件
- 在Shell 命令行中指定需要定義的屬性
- 直接運行java -jar 方式指定SpringBoot配置(推薦)
指定獨立的配置文件
將你需要指定的屬性,添加到一個獨立的配置文件中,該配置文件名類似於 JARfilename.conf
這種。啓動的獨立運行的Jar需要與conf後綴的配置文件處在同一級別的目錄下。
如下,你可以添加一些環境變量到JAVA_OPTS
屬性中。例如
JAVA_OPTS="-Dpropertykey=propvalue"
在可獨立執行的Jar前面添加變量
JAVA_OPTS="-Dpropertykey=propvalue" ./myapp.jar
命令行中指定
在命令行中,默認的SpringApplication 會自動的轉換以--
開頭的屬性到Spring的環境中。所以,可以通過這種方式從命令行,傳遞參數到Spring環境,或者覆蓋原有的參數。
java -jar myapp.jar --spring.datasource.password=123456
在SpringBoot2.x中, 如果在Build.gradle中在BootJar的task中添加了launchScript()
任務,也可以如下的執行jar包。
./myapp.jar --spring.datasource.password=123456