概要
SpringBoot にはデフォルトで環境ごとに設定を出し分ける機能があるのでそれを使うのが一番簡単です
--spring.profiles.active オプションを使います
環境
- macOS 26.4.1
- openjdk 26.0.1
- SpringBoot 4.0.6
- gradle 9.5.1
- VSCode 1.121.0
- MySQL 9.6.0
src/main/resources/application.properties
spring.application.name=demo
# update はアプリケーション起動時に、Entityに対応するテーブルがなければ作成します
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.datasource.url=jdbc:mysql://${MYSQL_HOST:localhost}:3306/mydatabase
spring.datasource.username=root
spring.datasource.password=
src/main/resources/application-dev.properties
spring.application.name=demo
# update はアプリケーション起動時に、Entityに対応するテーブルがなければ作成します
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.datasource.url=jdbc:mysql://${MYSQL_HOST:localhost}:3306/mydatabase_dev
spring.datasource.username=root
spring.datasource.password=
build や bootRun 時にオプションを付与する
上を使う場合には
- ./gradlew build
- ./gradlew bootRun
下を使う場合には
- ./gradlew build
-
java -jar build/libs/demo-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev
-
./gradlew bootRun --args='--spring.profiles.active=dev'
という感じで出し分けることができます
環境変数でもいける
-
SPRING_PROFILES_ACTIVE=dev ./gradlew bootRun
build 時の -P オプションでもいける
ただこれの場合は工夫が必要です
build.gradle で -P オプションで指定された引数の値を受け取り出し分けます
- vim build.gradle
def env = project.findProperty("env") ?: "dev"
tasks.withType(JavaExec) {
systemProperty "spring.profiles.active", env
}
-
./gradlew build -Penv=dev
おまけ: ログにansiカラーを入れる場合
-
./gradlew bootRun --args='--spring.profiles.active=dev --spring.output.ansi.enabled=always'
最後に
基本は spring.profiles.active オプションを使うのが良いと思います
0 件のコメント:
コメントを投稿