2015-01-13 14 views
8

Qualcuno è a conoscenza di un meccanismo per ottenere una distribuzione a caldo per risorse e modelli che lavorano in IntelliJ 14.0.2 per un'applicazione Spring Boot.Implementazione di avvio a caldo per modelli e risorse in IntelliJ

So che il supporto completo di Spring Boot è programmato per 14.1 ma ho un progetto che ho convertito da un progetto WAR standard a un progetto Spring Boot e mi manca davvero l'implementazione a caldo.

Al momento devo costruire manualmente il progetto in cui si trovano le risorse per ottenere l'implementazione a caldo e anche in questo caso è un po 'instabile a volte. Preferirei semplicemente salvare un modello o un file javascript/css e farlo prendere come facevo quando stavo eseguendo la mia app usando un server tomcat locale tramite IntelliJ.

Potrei tornare a Eclipse per farlo funzionare, ma il mio progetto è basato su Scala e il supporto per IntelliJ Scala è di gran lunga superiore.

+0

Senti il ​​tuo dolore. Quello che trovo particolarmente strano è che IntelliJ è in grado di ricaricare le classi (come '@ Controllers' - può essere facilmente testato) ma non le risorse. Ho fatto un piccolo test di debug dimostrando che le risorse sono presenti dopo la distribuzione dell'app tramite 'getClassLoader(). GetResource (...)' ma non sono più disponibili in questo modo dopo l'azione delle risorse di aggiornamento. –

+0

Ho paura che il supporto all'avvio non sia un problema qui. Questo è un problema più sottile. –

+0

Per il momento torno a fare dell'applicazione WAR Spring Spring, e ho usato il supporto IntelliJ per eseguire un WAR con un tomcat locale. Usando questo approccio ho avuto il mio caldo spiegamento. – thedoctor

risposta

10

Così, dopo alcuni test sono venuto a alcune conclusioni Credo che qualcuno che arriva qui possono trovare utili:

Se si esegue incorporato applicazione di avvio di primavera da IntelliJ IDEA (me il 14 al momento) in modalità di debug e si vuoi ri-distribuire a caldo le risorse che puoi fare tramite: Run->Reload changed classes. Impostazione di una scelta rapida da tastiera molto raccomandata.

Non fatevi ingannare dal messaggio Loaded classes are up to date. Nothing to reload.. Le risorse statiche sono state aggiornate (testate su file .js e modelli Thymeleaf).

Come sottolineato nei commenti per i modelli thymeleaf hot-ridistribuire si avrebbe bisogno:

spring.thymeleaf.cache=false 

Se si esegue nel contenitore esterno IntelliJ fornisce funzioni extra, come azione su Frame deactivation che è estremamente utile per lo sviluppo web. Funziona bene, quindi, fai attenzione che il contenitore Jetty esterno in 9.2.7 causerà problemi, ovvero scarica le risorse sull'azione Update resources interrompendo la tua webapp. L'unica correzione era il riavvio dell'app per me. Funziona bene con Tomcat 8.

+0

Penso che questa soluzione sia la cosa più vicina alle funzionalità di Eclipse. LiveReload ha iniziato a funzionare come dovrebbe. Consiglio vivamente di assegnare una scorciatoia come 'ctrl + s' dato che nell'idea non è necessario salvare esplicitamente qualcosa in ogni caso. –

+0

Ho dovuto aggiungere 'spring.thymeleaf.cache = false' nel mio file application.properties per fare in modo che funzionasse. http://stackoverflow.com/a/38371921/1647845 –

+0

Sì, grazie per aver segnalato questo –

4

Come da istruzioni here aggiunta la dipendenza spring-boot-devtools consentirà il caricamento delle risorse statiche (modelli e css).

Attenzione che è necessario selezionare Build -> Compile affinché funzioni.

Problemi correlati