Help us understand the problem. What is going on with this article?

Spring Bootの開発でホットデプロイする

More than 1 year has passed since last update.

概要

GradleからbootRunでSpring Bootアプリケーションを起動した際に、再ビルドによるホットデプロイをするために、必要なことです。

依存パッケージの追加

ホットデプロイを有効にするためには、依存パッケージの追加をするだけで良い。下記はGradleの場合。

build.gradle
compile 'org.springframework.boot:spring-boot-devtools'

Gradleのコマンドをトリガーにホットデプロイする

gradle(環境によってはgradlew)の、classesコマンドにより、Gradleから出力されるclassファイルが更新されると、Spring Bootがクラスファイルを再ロードし、ホットデプロイされる。

手順まとめ

  1. 依存パッケージにspring-boot-devtoolsを追加
  2. GradleでbootRunを実行し、Spring Bootを起動
  3. Gradleでclassesを実行し、Spring Bootにホットデプロイ

ちなみに

Gradleのビルドコマンドがclassesの理由

GradleのbootJarbootWarbuildでもclassesコマンドが実行されるのでホットデプロイはできるが、シンプルに書いたコードの動作確認だけしたい場合は、Jar、War出力の時間がオーバーヘッドになる。Spring Bootはクラスファイルを読み込んでおり、Jarを読み込んでいるわけではないので、classesで事足りる。(この時testは動かないので、JUnitなどのユニットテストは実行されない。)

Dockerを通した場合

DockerからローカルのGradleを通してbootRunでローカルのSpring Bootをすれば、NginxなどでHTTPリクエストの受けを通しつつ、ホットデプロイすることができる。(関連記事

mediado
私たちメディアドゥは、電子書籍を読者に届けるために「テクノロジー」で「出版社」と「電子書店」を繋ぎ、その先にいる作家と読者を繋げる「電子書籍取次」事業を展開しております。業界最多のコンテンツラインナップとともに最新のテクノロジーを駆使した各種ソリューションを出版社や電子書店に提供し、グローバル且つマルチコンテンツ配信プラットフォームを目指しています。
https://mediado.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away