Intellij IDEで正常に実行されるスプリングブートアプリケーションがあります。つまり、SpringApplication.runに委任するmainメソッドを持つApplicationクラスを開始しました。ホットスワップを除くすべてがうまく機能します。ソースを変更すると、アプリケーションを再起動する必要があります。デバッグモードでアプリケーションを起動しても、hotswapが機能しないことがわかります。 Intellijのデバッグ設定でホットスワップが有効になっていることがわかりました。
私の観察では、springbootアプリケーションを実行すると、使用されるクラスパスが私の
/projects/MyProject /クラス/制作/....
コードを変更しても、classes/production
の下のファイルは更新されません。 Intellij IDEはファイルをコンパイルしますが、classes/productionディレクトリを更新しません。スプリングブート用のIntelliJ IDEでホットスワップを使用するにはどうすればよいですか?
根本原因を見つけました。これは、Springブートとは関係ありません。 groovyのソースファイルを変更しても、ファイルは自動コンパイルされませんでした。
変更されたファイルを再コンパイルしてスワップするには:
Ctrl+Shift+F9
WindowsでCmd+Shift+F9
MacDevToolsを使用するソリューションは動作します:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
設定-> Build-Execution-Deployment-> Compilerを開き、有効にします:
Build Project Automatically.
押す ctrl+shift+A
およびregistry
を検索します。レジストリで有効にします:
compiler.automake.allow.when.app.running
それが役に立てば幸い !
参考文献:
spring-loaded を使用します。 Beanのリロードでも問題なく動作します。 JRebelの無料の代替品です。
別の方法は [〜#〜] dcevm [〜#〜] または hotswapagent を使用することです
ステップ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 [〜#〜]
手順3:ショートカットキーCtrl + Shift + Aを押して検索レジストリキーワード&プレスEnter
Enablecomplier.automake.allow.when.app.running&クリック閉じるボタン
ステップ4:お気に入りのWebブラウザーでキャッシュを無効にします
ステップ5:完了!!!
私も同じ問題に気づきました。私はIntellij 13.1.1を使用しています。変更されたクラスをホットスワップするために。デバッグモードでアプリを実行する必要があります。クラスを変更した後、「実行->変更されたクラスを再読み込み」を手動で選択します。
http://www.jetbrains.com/idea/webhelp/reloading-classes.html に示されているように、デバッガーをhotswapに設定していますが、動作していないようです。
とにかく、少なくとも手動の「実行->変更されたクラスの再読み込み」メニューは機能します。
私の場合、Spring Boot devツールを追加し、ビルドプロジェクトを自動的にチェックした後でも、機能していませんでした。欠けていたのはこれでした:
プロジェクト実行構成に移動します。
「更新」アクションと「フレームの非アクティブ化」を「クラスとリソースの更新」に設定します。そしてそれは魅力のように働いた。
次のいずれかの方法を使用して、Thymeleafテンプレートを自動再ロードできます。
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テンプレートを自動再読み込み でブログ投稿を書きました。