2015-01-13 12 views
8

Kennt jemand einen Mechanismus, um eine Hot-Deployment für Ressourcen und Vorlagen unter IntelliJ 14.0.2 für eine Spring-Boot-Anwendung zu erhalten.Spring-Boot-Hot-Deployment für Vorlagen und Ressourcen unter IntelliJ

Ich weiß, dass die volle Spring Boot-Unterstützung für 14.1 geplant ist, aber ich habe ein Projekt, das ich von einem Standard-WAR-Projekt in ein Spring-Boot-Projekt umgewandelt habe und ich vermisse wirklich die heiße Bereitstellung.

Im Moment muss ich manuell das Projekt erstellen, dass die Ressourcen in Hot-Deployment sind und selbst dann ist es manchmal ein wenig flockig. Ich würde es vorziehen, einfach eine Vorlage oder eine Javascript/CSS-Datei zu speichern und sie wie bei der Ausführung meiner App über einen lokalen Tomcat-Server über IntelliJ abzurufen.

Ich könnte wieder zu Eclipse wechseln, damit das funktioniert, aber mein Projekt ist Scala-basiert und IntelliJ Scala-Unterstützung ist weit überlegen.

+0

Fühlen Sie Ihren Schmerz. Besonders merkwürdig finde ich, dass IntelliJ Klassen neu laden kann (wie '@Controllers' - kann leicht getestet werden), aber nicht die Ressourcen. Ich habe einen kleinen Debugging-Test durchgeführt, der belegt, dass Ressourcen nach der App-Bereitstellung über 'getClassLoader(). GetResource (...)' vorhanden sind, aber nach der Aktualisierung der Ressourcen nicht mehr auf diese Weise verfügbar sind. –

+0

Ich fürchte, die Boot-Unterstützung ist hier kein Problem. Dies ist ein subtileres Problem. –

+0

Für den Moment wechsle ich zurück, um meine Hauptanwendung eine Spring Boot WAR zu machen, und benutze die IntelliJ Unterstützung, um einen WAR mit einem lokalen Tomcat laufen zu lassen. Mit diesem Ansatz habe ich meine heiße Bereitstellung zurückbekommen. – thedoctor

Antwort

10

So nach einigen Tests ich einige Schlussfolgerungen kam ich denke, jemand hier ankommen nützlich finden können:

Wenn Sie von IntelliJ IDEA eingebettet Feder Boot-Anwendung ausgeführt wird (selbst im Moment auf 14) im Debug-Modus und Sie möchte Ressourcen erneut bereitstellen, können Sie das tun über: Run->Reload changed classes. Ein Tastaturkürzel wird sehr empfohlen.

Lassen Sie sich nicht durch Loaded classes are up to date. Nothing to reload. Nachricht täuschen. Ihre statischen Ressourcen wurden aktualisiert (getestet unter .js Dateien und Thymeleaf-Vorlagen).

Wie bereits in den Kommentaren für thymeleaf Vorlagen aus Hot-umschichten würden Sie brauchen:

spring.thymeleaf.cache=false 

Wenn Sie in externen Behälter laufen IntelliJ auf Frame deactivation zusätzliche Funktionen wie Aktion bereitstellt, die für Web-Entwicklung äußerst praktisch ist. Dies funktioniert auch gut, nur darauf achten, dass externe Jetty Container auf 9.2.7 Probleme verursachen, d. H. Entladen Sie die Ressourcen auf Update resources Aktion brechen Ihre Webapp. Die einzige Lösung war App-Neustart für mich. Funktioniert gut in Tomcat 8.

+0

Ich denke, dass diese Lösung der Eclipse-Funktionalität am nächsten kommt. LiveReload begann zu arbeiten, wie es sollte. Ich empfehle auch sehr, eine Verknüpfung wie 'ctrl + s' zu vergeben, da man in der Idee sowieso nichts explizit speichern muss. –

+0

Ich musste hinzufügen 'spring.thymeleaf.cache = false' in meiner Datei application.properties, damit dies funktioniert. http://StackOverflow.com/a/38371921/1647845 –

+0

Ja, vielen Dank, dass Sie darauf hingewiesen haben –

4

Wie angewiesen hinzufügen spring-boot-devtools Abhängigkeit wird statische Ressourcen neu laden (Vorlagen und CSS).

Beachten Sie, dass Sie Build -> Compile auswählen müssen, damit dies funktioniert.