Spring Boot: bootrun が gradle のタスクとして登録されるまで


Spring Boot を使うと、 Gradle のタスクとして bootrun が追加されます。 それがどのようにして登録されているのかを追いかけてみました。


掲載しているコードは、 時点での各リポジトリのマスターブランチです。

プラグイン追加時にタスクが追加される

bootrun は、 Spring Boot を build.gradle に記述することで使えるようになります。

apply plugin で Spring Boot のプラグインを読み込むと SpringBootPluginexecute が実行されます。 その中で、 JavaPluginAction をプラグインとして追加しています。

他にも KotlinPluginAction があり、 そこでは Kotlin の Gradle プラグイン を読み込んでいます。

JavaPluginAction がプラグインとして読み込まれているので、 そのクラスの execute が実行されます。 JavaPluginAction は インターフェース PluginApplicationAction を実装しています。
PluginApplicationActionAction<Project> を継承したインターフェースで、 Action<Project> にひとつメソッドが追加されたものです。

この中の configureBootRunTask で タスク bootrun が追加されます。

BootRun の中身

bootrun は、 通常 apply plugin: 'application' で実行できるようになる gradle run を Spring Boot 向けに ラップしたものです。 JavaExec に追加されたコードはさほど多くありません。