web-dev-qa-db-ja.com

Intellijを使用したスプリングブートホットスワップIDE

Intellij IDEで正常に実行されるスプリングブートアプリケーションがあります。つまり、SpringApplication.runに委任するmainメソッドを持つApplicationクラスを開始しました。ホットスワップを除くすべてがうまく機能します。ソースを変更すると、アプリケーションを再起動する必要があります。デバッグモードでアプリケーションを起動しても、hotswapが機能しないことがわかります。 Intellijのデバッグ設定でホットスワップが有効になっていることがわかりました。

私の観察では、springbootアプリケーションを実行すると、使用されるクラスパスが私の

/projects/MyProject /クラス/制作/.... 

コードを変更しても、classes/productionの下のファイルは更新されません。 Intellij IDEはファイルをコンパイルしますが、classes/productionディレクトリを更新しません。スプリングブート用のIntelliJ IDEでホットスワップを使用するにはどうすればよいですか?

50
suman j

根本原因を見つけました。これは、Springブートとは関係ありません。 groovyのソースファイルを変更しても、ファイルは自動コンパイルされませんでした。

変更されたファイルを再コンパイルしてスワップするには:

  • Ctrl+Shift+F9 Windowsで
  • Cmd+Shift+F9 Mac
22
suman j

DevToolsを使用するソリューションは動作します:

1-プロジェクトへの開発ツールの追加

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
</dependency>

2-自動ビルドを有効にする

設定-> Build-Execution-Deployment-> Compilerを開き、有効にします:

Build Project Automatically.

3- compiler.automake.allow.when.app.runningの値を更新します

押す ctrl+shift+Aおよびregistryを検索します。レジストリで有効にします:

compiler.automake.allow.when.app.running

それが役に立てば幸い !


参考文献:

82
Radouane ROUFID

spring-loaded を使用します。 Beanのリロードでも問題なく動作します。 JRebelの無料の代替品です。

別の方法は [〜#〜] dcevm [〜#〜] または hotswapagent を使用することです

9

ステップ1: 開発者ツールの依存度を追加

Maven。

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional>
    </dependency>
</dependencies>

Gradle。

dependencies {
    compile("org.springframework.boot:spring-boot-devtools")
}

ステップ2:File |設定|ビルド、実行、展開|コンパイラー

enableプロジェクトを自動的にビルドApply[〜#〜] ok [〜#〜]

enter image description here

手順3:ショートカットキーCtrl + Shift + Aを押して検索レジストリキーワード&プレスEnter

enter image description here

Enablecomplier.automake.allow.when.app.running&クリック閉じるボタン

enter image description here

ステップ4:お気に入りのWebブラウザーでキャッシュを無効にします

enter image description here

ステップ5:完了!!!

YouTubeでソリューションを見る

Solution

7
shellhub

私も同じ問題に気づきました。私はIntellij 13.1.1を使用しています。変更されたクラスをホットスワップするために。デバッグモードでアプリを実行する必要があります。クラスを変更した後、「実行->変更されたクラスを再読み込み」を手動で選択します。

http://www.jetbrains.com/idea/webhelp/reloading-classes.html に示されているように、デバッガーをhotswapに設定していますが、動作していないようです。

とにかく、少なくとも手動の「実行->変更されたクラスの再読み込み」メニューは機能します。

4
user3206144

私の場合、Spring Boot devツールを追加し、ビルドプロジェクトを自動的にチェックした後でも、機能していませんでした。欠けていたのはこれでした:

  1. プロジェクト実行構成に移動します。

  2. 「更新」アクションと「フレームの非アクティブ化」を「クラスとリソースの更新」に設定します。そしてそれは魅力のように働いた。

2
Sameer Khanal

以下のプロセスに従うことができます-

enter image description here

0
Pankaj Kumar

次のいずれかの方法を使用して、Thymeleafテンプレートを自動再ロードできます。

  1. Spring Boot Dev Tools
  2. Thymeleafテンプレートパスの変更
  3. Gulp Watch

Gulp watch をお勧めします。セットアップが簡単で、うまく機能します。

var gulp = require('gulp'), 
watch = require('gulp-watch');

gulp.task('watch', function () {
    return watch('src/main/resources/**/*.*', () => {
            gulp.src('src/main/resources/**')
                //replace with build/resources/main/ for netBeans
                .pipe(gulp.dest('out/production/resources/')); 
    });
});

gulp.task('default', ['watch']);

ターミナルで次のコマンドを入力して、gulp watchを開始します。

$ gulp 
//OR
$ gulp watch

IntelliJ IDEで再起動せずにThymeleafテンプレートを自動再読み込み でブログ投稿を書きました。

0
attacomsian