昨日、EclipseからIntelliJ IDEAに切り替えました。
JRebelをWebSphere Server 7でも使用しています。
私が変更するとき Javaファイル、およびヒットを保存する、IntelliJ しないを再コンパイルすることを除いて、現在はすべてうまく動作しているようですJRebelが取得するためのファイル。
Eclipseの「自動的にビルド」機能により、この問題は解決されました。
IntelliJ IDEAでは、ヒットする必要があります CTRL+SHIFT+9 関連するクラスを再コンパイルしてJRebelがそれを取得するようにします。 2つのファイルで変更が行われた場合、各1つでこれを行うがあり、IntelliJはすべてを保存するメカニズムを使用しているため、何を再コンパイルするかを知るのは非常に困難です手動で行うことは、どちらにもあまり興味がありません。
IntelliJを独自にこれを行うにする方法はありませんか?
両方の手順に従ってください:
make project automatically
Make Project automatically
機能を有効にするRegistry
compiler.automake.allow.when.app.running
を見つけ、その横にある有効にするまたはチェックボックスをクリックする注:今すぐアプリケーションを再起動してください:)
注:これにより、スプリングブートdevtoolsによるライブリロードも可能になります。
Eclipse Modeプラグインは廃止されており、最近のIDEA 12+ビルドと互換性がありません。インストールすると、IDEはファイルが変更されるたびにハングし、応答が非常に遅くなります。
IntelliJ IDEAは自動ビルドを使用せず、コンパイラ経由ではなく、その場でエラーを検出します。 Eclipseモードと同様に、 IDEA 12 で利用できます:
Build
を使用します| Make
、変更された依存ファイルのみをコンパイルするインクリメンタルmakeプロセスを呼び出します(非常に高速です)。
FAQエントリ も役立ちます。
自動make機能の更新:実行/デバッグ構成の実行中、Make project automatically
は効果がありません。ディスク上のクラスはBuild
でのみ変更されます| Make
。私たちの意見では、ディスク上のクラスの変更は常にユーザーの制御下にある必要があるため、これは設計の中心的な決定事項です。自動makeはEclipse機能の模倣ではありません。動作が異なり、主な目的は、クラスが本当に必要なときに(アプリやテストを実行する前に)クラスが準備できるのを待つ時間を節約することです。この質問で説明されている場合のように、自動makeは、トリガーする必要がある明示的なコンパイルを置き換えません。別の動作を探している場合は、上記のFAQにリンクされているEclipseModeプラグインの方が適しています。
ctrl+s
をキーマップして、1ステップで保存およびコンパイルできます。キーマップ設定に移動し、Compile
を検索します。
最終的にマクロを記録して、ワンステップで保存およびコンパイルし、Ctrl+s
をキーマップしました。
実際には違いなしがあります。両方とも1クリックが必要です。
最も簡単な解決策はそれに慣れることです。なぜなら、日中のほとんどをIDEで過ごすときは、そのうちのいくつかで遅い習慣をつけるよりも、速い習慣を1つで持つほうがよいからです。
マクロを使用してこれを解決できました。
マクロの記録を開始しました:
「SaveAndMake」のような便利な名前を付けます。
ここで、Save allキーバインドを削除して、同じキーバインドをマクロに追加してください!
そのため、保存するたびにダーティコンパイルが保存および作成され、jRebelはすべての変更を正しく検出します。
次の手順を慎重に実行して、有効にしてください。
1)SB V1.3でSpring Bootプロジェクトを作成し、依存関係に「Devtools」(1 *)を追加します
2)Help-> Find Action ...を呼び出し、「Registry」と入力し、ダイアログで「automake」を検索して、エントリ「compiler.automake.allow.when.app.running」、ダイアログを閉じる
3)[設定]-> [ビルド、実行、展開]-> [プロジェクトの自動作成]でバックグラウンドコンパイルを有効にします。
4)Spring Bootの実行構成を開き、すべてが正しく構成されている場合は警告メッセージが表示されます
5)アプリを実行し、オンザフライでクラスを変更します
この問題に対するコメントとして、あなたの経験や問題を報告してください。
Intellijは、他のモジュールでコンパイルの問題が発生すると静かに失敗し、自動ビルドは実行されません。 Problems
ウィンドウを確認してください
Reformat and Compileプラグインを使用します(Alexandre DuBreuilのSave Actionsプラグインに触発された):
https://plugins.jetbrains.com/plugin/8231?pr=idea_ce
現時点では、jarファイルのみを提供していますが、これはコードの最も重要な部分です。
private final static Set<Document> documentsToProcess = new HashSet<Document>();
private static VirtualFile[] fileToCompile = VirtualFile.EMPTY_ARRAY;
// The plugin extends FileDocumentManagerAdapter.
// beforeDocumentSaving calls reformatAndCompile
private static void reformatAndCompile(
@NotNull final Project project,
@NotNull final Document document,
@NotNull final PsiFile psiFile) {
documentsToProcess.add(document);
if (storage.isEnabled(Action.compileFile) && isDocumentActive(project, document)) {
fileToCompile = isFileCompilable(project, psiFile.getVirtualFile());
}
ApplicationManager.getApplication().invokeLater(new Runnable() {
@Override
public void run() {
if (documentsToProcess.contains(document)) {
documentsToProcess.remove(document);
if (storage.isEnabled(Action.optimizeImports)
|| storage.isEnabled(Action.reformatCode)) {
CommandProcessor.getInstance().runUndoTransparentAction(new Runnable() {
@Override
public void run() {
if (storage.isEnabled(Action.optimizeImports)) {
new OptimizeImportsProcessor(project, psiFile)
.run();
}
if (storage.isEnabled(Action.reformatCode)) {
new ReformatCodeProcessor(
project,
psiFile,
null,
ChangeListManager
.getInstance(project)
.getChange(psiFile.getVirtualFile()) != null)
.run();
}
ApplicationManager.getApplication().runWriteAction(new Runnable() {
@Override
public void run() {
CodeInsightUtilCore.forcePsiPostprocessAndRestoreElement(psiFile);
}
});
}
});
}
}
if (fileToCompile.length > 0) {
if (documentsToProcess.isEmpty()) {
compileFile(project, fileToCompile);
fileToCompile = VirtualFile.EMPTY_ARRAY;
}
} else if (storage.isEnabled(Action.makeProject)) {
if (documentsToProcess.isEmpty()) {
makeProject(project);
}
} else {
saveFile(project, document, psiFile.getVirtualFile());
}
}
}, project.getDisposed());
}
private static void makeProject(@NotNull final Project project) {
ApplicationManager.getApplication().invokeLater(new Runnable() {
@Override
public void run() {
CompilerManager.getInstance(project).make(null);
}
}, project.getDisposed());
}
private static void compileFile(
@NotNull final Project project,
@NotNull final VirtualFile[] files) {
ApplicationManager.getApplication().invokeLater(new Runnable() {
@Override
public void run() {
CompilerManager.getInstance(project).compile(files, null);
}
}, project.getDisposed());
}
private static void saveFile(
@NotNull final Project project,
@NotNull final Document document,
@NotNull final VirtualFile file) {
ApplicationManager.getApplication().invokeLater(new Runnable() {
@Override
public void run() {
final FileDocumentManager fileDocumentManager = FileDocumentManager.getInstance();
if (fileDocumentManager.isFileModified(file)) {
fileDocumentManager.saveDocument(document);
}
}
}, project.getDisposed());
}
エラーが発生していました:一部のjarがクラスパスにないため、破損したjarとperrformを削除します
1.Project > Setting>Build,Execution,Deployment>Compiler>check build project automatically
2.CTRL+SHIFT+A find/search **registry** --Check for below param
compiler.automake.allow.when.app.running
compiler.automake.trigger.delay=500---According to ur requirement
3.Add devtool in pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
4.Build ,If found any probelm while building ,saying some jar in not in class path.Just delete the corrupted jar
and re-build the project angain after sync with maven lib