Ich führe Intellij Ultimate mit Tomcat aus und setze einen Krieg ein. Alles wird einwandfrei im Webapp-Verzeichnis von Tomcat bereitgestellt.
Gibt es eine Möglichkeit für Tomcat, diese Änderung automatisch zu übernehmen, wenn ich eine Datei wie eine XML-Datei ändere? Ab sofort muss ich die Datei von Intellij kopieren und in das Verzeichnis kopieren, in dem sie sich im Tomcat-Webanwendungsverzeichnis befindet. Ich weiß, dass es bestimmte Dateien gibt, die neu kompiliert werden müssen, aber xhtmls gehören nicht dazu.
Dies ist nicht möglich, wenn Sie einen Krieg mit IntelliJ IDEA führen. Dies kann jedoch der Fall sein, wenn Sie einen explodierten Krieg einsetzen . In IDEA:
my-webapp-name:war
my-webapp-name:war exploded
Jedes Mal, wenn Sie eine Änderung vornehmen, stellt IDEA die geänderten Dateien erneut bereit, wenn der IDEA-Frame deaktiviert ist (dh den Fokus verliert). Es dauert ein oder zwei Sekunden. Sie sehen es in der unteren Statusleiste von IDEA. Offensichtlich. Sie müssen Ihren Webbrowser noch aktualisieren, damit er die neue Datei abruft (es sei denn, die Seite verfügt über eine automatische Aktualisierung von Ajax wie Fetch).
Eine gute Kombination mit Tomcat besteht darin, "On-Frame-Deaktivierung" auf "Ressourcen aktualisieren" und die Aktion "Bei Aktualisierung" entweder auf "Neu bereitstellen" oder "Server neu starten" zu setzen. Dadurch können statische Seiten schnell über Frame-Deaktivierung aktualisiert werden Klasse über die Aktion 'Update' aktualisiert.
Ein Unternehmen namens ZeroTurnaround verkauft JRebel , eine dynamische Classloader-Lösung. Sie haben auch eine fünfteilige Serie zu diesem Thema , die sehr gut ist.
quelle
Error: Artifact 'my-webapp-name:war exploded' has invalid extension
Wie behebe ich das ?Wenn Sie Klassen und Ressourcen aktualisieren möchten, führen Sie Tomcat im Debug-Modus aus . In diesem Modus aktualisiert IntelliJ Klassen und Ressourcen problemlos (Hot-Swap).
Habe das gleiche Problem. IntelliJ hat mein Projekt nicht aktualisiert, da ich als "Ausführungsmodus" ausgeführt werde. Wenn ich im Debug-Modus laufe und Ctrl+ drücke F10, werden Klassen und Ressourcen aktualisiert.
quelle
Ich habe einen besseren Weg gefunden.
In Eclipse haben wir automatisch statische Dateien erstellt, kompiliert und neu geladen. Tatsächlich werden statische Dateien direkt von src / main / webapp bereitgestellt .
In IntelliJ wird anstelle der direkten Bereitstellung von src / main / webapp ein Ordner im Ziel erstellt, in dem Sie eine Kopie Ihrer src / main / webapp und anderer kontextbezogener Dateien haben . Web-inf / classes / lib.
Wenn Sie anstelle des Ziels setzen die Ausgabe von explodierten Artefakt src / main / webapp , wird es nicht überschreiben Sie Quelldateien, und es wird direkt dienen, Sie werden nicht getroffen haben - Update Ressourcen / update Ressourcen und Klassen
Was Sie also in IntelliJ tun müssen, ist
Wenn Sie danach Jobs haben, die statische Dateien von außerhalb von IntelliJ ändern, werden Änderungen sofort angezeigt, ohne zu IntelliJ zu wechseln und Ressourcen zu aktualisieren. Für die Klassen haben Sie das Makro, das gespeichert und kompiliert wird (Hinweis: Sie können auch einfach auf Kompilieren klicken / Neukompilieren: cmd + shift + F9 / cmd + F9 - Wenn Sie mehrere Editoren geöffnet haben, werden Ihre schmutzigen * Editoren nicht schmutzig sein und Änderungen (Klassen) werden neu geladen.)
quelle
Dies ist nur möglich, wenn Sie den explodierten Kriegsordner bereitstellen, das Hot-Reloading aktivieren und Tomcat im Debug-Modus starten.
Dies sind die Schritte, um dies zu erreichen.
quelle
Wenn Sie mehrteilige Dateien haben, die Sie sofort anzeigen / abspielen möchten, laden Sie sie direkt in den Zielordner hoch. * (Ändere nur den Schreibort in den Zielordner / static /)
Sie können Ihre Datei sofort anzeigen, ohne Ihre IDE neu starten zu müssen
quelle