1. ホーム
  2. java

gradleタスクでspringプロファイルを使ったbootRunを実行する方法

2023-08-16 23:17:52

質問

を起動するようにgradleをセットアップしようとしています。 bootRun プロセスを起動するように設定しようとしています。

私の現在の bootRun の構成は次のようになっています。

bootRun {
    // pass command line options from gradle to bootRun
    // usage: gradlew bootRun "-Dspring.profiles.active=local,protractor"
    if (System.properties.containsKey('spring.profiles.active')) {
        systemProperty "spring.profiles.active", System.properties['spring.profiles.active']
    }
}

システムのプロパティを設定するのに gradle タスクを実行し、その後 bootRun .

私の試みはこのようなものでした。

task bootRunDev

bootRunDev  {
    System.setProperty("spring.profiles.active", "Dev")
}

少し質問です。

  1. systemProperty は、spring boot bootRun の設定の一部ですか?
  2. は、他のタスクでシステムプロパティを設定することは可能ですか?
  3. 次のステップはどうすればよいですか。私は bootRunDev の前に bootRun
  4. 他に検討すべき方法はありますか?

-エリック

どのように解決するのですか?

最も単純な方法は、デフォルトを定義し、それをオーバーライドできるようにすることです。この場合、systemPropertyの使い道がよくわかりません。単純な引数で十分です。

def profiles = 'prod'

bootRun {
  args = ["--spring.profiles.active=" + profiles]
}

devを実行するため。

./gradlew bootRun -Pdev

タスクに依存関係を追加するには、次のようにします。

task setDevProperties(dependsOn: bootRun) << {
  doFirst {
    System.setProperty('spring.profiles.active', profiles)
  }
}

Gradleでこれを実現する方法はたくさんあります。

編集する

環境ごとに設定ファイルを分けて設定する。

if (project.hasProperty('prod')) {
  apply from: 'gradle/profile_prod.gradle'
} else {
  apply from: 'gradle/profile_dev.gradle'
}

各設定は、例えばタスクをオーバーライドすることができます。

def profiles = 'prod'
bootRun {
  systemProperty "spring.profiles.active", activeProfile
}

を指定して実行します。 prod のようなフラグを立てて実行します。

./gradlew <task> -Pprod