SpringBoot x GradleをIntelliJで開発するときは、IntelliJからGradleのタスクを起動する

エキサイト株式会社メディア事業部エンジニアの佐々木です。メディア事業部では、SpringBoot、Gradle、IntelliJでリビルド開発を日々行っています。Dockerを使ったローカル環境での開発を行っています。開発でのSpringBootの起動方法は複数ありますので、3つご紹介します。

前提

スタックは下記になります。

SpringBoot: 2.6.3
Java: 17.0.2
Gradle: 7.3.3

設定

build.gradleに下記の設定を行います。

bootRun {
      sourceResources sourceSets.main  // resourcesディレクトリの参照先を /buildディレクトリではなく、/main配下を参照するようにする
      jvmArgs = [
            '-Dspring.output.ansi.enabled=ALWAYS',   // ログに色付を行う
            '-Dspring.profiles.active=local'   // localのプロファイルを使用する
      ]
}

結論

結論として、IntelliJからGradleタスクを起動しましょう になります。デメリットもとくになく、起動も簡単です。SpringBoot devtoolsを入れれば、コード保存時にビルドが走れば、Hot Restartしてくれます。(Hot Reloadじゃないです)

IntelliJからmainメソッドを使って起動

IntelliJの機能でmainメソッドはエディタ上から起動できます。 これでSpringBootは起動できます。

メリット

デメリット

  • SpringBoot devtools が思ったように動かない
  • Gradleの設定が効いたり効かなかったり(GradleDaemonが増え続けていたときもある)
  • sourceResources sourceSets.main の設定が効かない
    • Thymeleafなどのテンプレートファイルやjs/css等のファイルを更新しても読み込まれない

gradleコマンドから起動

下記コマンドでの起動します。

$ ./gradlew web:bootRun

メリット

  • IntelliJがなくても可能
  • Gradleの設定が効く
  • sourceResources sourceSets.main の設定が効く

デメリット

  • デバッグ機能を使うには追加で設定が必要になる( remote debug の設定が必要になる)

IntellijからGradleタスクで起動

IntelliJに入っているGradleプラグインからSpringBootを起動します。

メリット

  • Gradleの設定が効く
  • sourceResources sourceSets.main の設定が効く

デメリット

いまのところなし

まとめ

起動方法が複数あるので、チーム内であわせていきたいところです。

終わりに

エキサイトではフロントエンジニア、バックエンドエンジニア、アプリエンジニアを随時募集しております。長期インターンも歓迎していますので、興味があれば連絡いただければと思います。

カジュアル面談はこちらになります! meety.net

募集職種一覧はこちらになります!(カジュアルからもOK) www.wantedly.com