Gradle でアプリケーションを実行する

アーカイブを作成せずにアプリケーションを実行するには、bootRun タスクを使用します。

$ ./gradlew bootRun

bootRun タスクは、JavaExec サブクラスである BootRun (Javadoc) のインスタンスです。そのため、Gradle で Java プロセスを実行するための通常の構成オプション (英語) はすべて利用可能です。タスクは、メインソースセットのランタイムクラスパスを使用するように自動的に構成されます。

デフォルトでは、メインソースセットの出力で public static void main(String[]) メソッドを持つクラスを探すことによって、メインクラスが自動的に構成されます。

メインクラスは、タスクの main プロパティを使用して明示的に構成することもできます。

  • Groovy

  • Kotlin

tasks.named("bootRun") {
	mainClass = 'com.example.ExampleApplication'
}
tasks.named<BootRun>("bootRun") {
	mainClass.set("com.example.ExampleApplication")
}

または、Spring Boot DSL の mainClass プロパティを使用して、プロジェクト全体でメインクラス名を設定できます。

  • Groovy

  • Kotlin

springBoot {
	mainClass = 'com.example.ExampleApplication'
}
springBoot {
	mainClass.set("com.example.ExampleApplication")
}

デフォルトでは、bootRun は JVM を構成して、開発中の起動を高速化するために最適化します。この動作は、次の例に示すように、optimizedLaunch プロパティを使用して無効にすることができます。

  • Groovy

  • Kotlin

tasks.named("bootRun") {
	optimizedLaunch = false
}
tasks.named<BootRun>("bootRun") {
	optimizedLaunch.set(false)
}

application プラグイン (英語) が適用されている場合は、その mainClass のプロパティが設定されている必要があり、同じ目的で使用することができます。

  • Groovy

  • Kotlin

application {
	mainClass = 'com.example.ExampleApplication'
}
application {
	mainClass.set("com.example.ExampleApplication")
}

アプリケーションに引数を渡す

すべての JavaExec タスクと同様に、Gradle 4.9 以降を使用する場合は、--args='<arguments>' を使用してコマンドラインから引数を bootRun に渡すことができます。例: dev という名前のプロファイルをアクティブにしてアプリケーションを実行するには、次のコマンドを使用できます。

$ ./gradlew bootRun --args='--spring.profiles.active=dev'

詳細については、JavaExec.setArgsString の javadoc を参照して (英語) ください。

システムプロパティをアプリケーションに渡す

bootRun は標準の JavaExec タスクであるため、ビルドスクリプトで指定することにより、システムプロパティをアプリケーションの JVM に渡すことができます。システムプロパティのその値を構成可能にするには、プロジェクトプロパティ (英語) を使用してその値を設定します。プロジェクトプロパティをオプションにするには、findProperty を使用して参照します。これにより、次の例に示すように、?: エルビス演算子を使用してデフォルト値を提供することもできます。

  • Groovy

  • Kotlin

tasks.named("bootRun") {
	systemProperty 'com.example.property', findProperty('example') ?: 'default'
}
tasks.named<BootRun>("bootRun") {
	systemProperty("com.example.property", findProperty("example") ?: "default")
}

上記の例では、その com.example.property システムプロパティを example プロジェクトプロパティの値に設定しています。example プロジェクトプロパティが設定されていない場合、システムプロパティの値は default になります。

Gradle を使用すると、次の例に示すように、-P フラグを使用したコマンドラインなど、さまざまな方法でプロジェクトプロパティを設定できます。

$ ./gradlew bootRun -Pexample=custom

上記の例では、example プロジェクトプロパティの値を custom に設定しています。bootRun は、これを com.example.property システムプロパティの値として使用します。

リソースの再読み込み

devtools がプロジェクトに追加されている場合、変更がないかアプリケーションのクラスパスを自動的に監視します。devtools でリロードをトリガーするには、クラスパスを更新するために変更されたファイルを再コンパイルする必要があることに注意してください。devtools の使用の詳細については、リファレンスドキュメントのこのセクションを参照してください。

アプリケーションの静的リソースがソースの場所から読み込まれるように bootRun を構成することもできます。

  • Groovy

  • Kotlin

tasks.named("bootRun") {
	sourceResources sourceSets.main
}
tasks.named<BootRun>("bootRun") {
	sourceResources(sourceSets["main"])
}

これにより、開発中に役立つ可能性があるライブアプリケーションに再読み込み可能になります。

テストメインクラスの使用

bootRun に加えて、bootTestRun タスクも登録されます。bootRun と同様に、bootTestRun は BootRun のインスタンスですが、メインソースセットではなくテストソースセットの出力にあるメインクラスを使用するように構成されています。また、メインソースセットのランタイムクラスパスではなく、テストソースセットのランタイムクラスパスも使用します。bootTestRun は BootRun のインスタンスであるため、bootRun について上で説明したすべての構成オプションは bootTestRun でも使用できます。