2015-12-05 15 views
6

Quando si utilizza Spring senza la tecnologia di avvio Spring, posso avviare l'applicazione con il plugin Tomcat Maven e aggiornare my html, css e js senza dover riavviare il server affinché le modifiche abbiano effetto nel browser.Caricamento del fegato per le risorse in Intellij utilizzando il caricamento a molla

Ora, quando si esegue questa operazione con l'avvio di Spring, dovrò eseguire un'attività Make in IntelliJ ogni volta che cambio qualcosa nelle mie risorse statiche, altrimenti non vedrò semplicemente le modifiche nel browser. La mia applicazione Spring Boot utilizza anche la dipendenza devtools e il browser è connesso al socket live reload quando lo si guarda.

Questa configurazione non mostra ancora le modifiche apportate nei miei file statici. Cosa devo fare per farlo funzionare?

risposta

1

Sembra che il problema riguardasse il posizionamento delle mie risorse statiche. Ho dovuto inserirli in una cartella webapp sotto il pacchetto main. Stavo seguendo una guida di Spring.io prima che consigliassi di inserire le risorse statiche nel pacchetto resources.

Ora che ho smesso di usare il pacchetto resources, tutto funziona come lo voglio.

+0

Sono felice che tu abbia trovato una soluzione. Trovo strano che tu abbia avuto la risorsa statica nella cartella 'resources', e ancora non ha raccolto la modifica. Sono sicuro al 99% che leggo che sarebbe in quella documentazione ... Oh bene. – Mike

+0

Stavo avendo lo stesso problema. Sei riuscito a farlo funzionare anche per i tuoi file html? Questo problema è stato risolto per i miei js/css quando li ho spostati in src/main/webapp/[css | js] ma quando ho spostato i miei modelli su src/main/webapp/templates, i miei controller non sono riusciti a trovare i modelli. Qualsiasi aiuto? – user2923779

+2

Quando eseguivo la mia applicazione con spring-boot dovevo anche posizionare i file statici in 'resources'. Se li inserissi nella directory 'webapp', non sarebbero inclusi nel file JAR che stavo creando. Con spring-boot non è più necessario creare un file WAR, quindi sembra che 'resources' sia la posizione preferita per il contenuto statico. LiveReload ha funzionato solo con I Make the Project (CMD + F9) in IntelliJ15. – Miguel

0

Se si segue l'attuale Spring Boot 1.3.0.RELEASE documentation, sembra che descrive esattamente come risolvere il problema che si sta verificando. Descrive anche l'uso di IntelliJ e Maven.

Quindi forse verificarlo e vedere se stai seguendo prima il percorso documentato?

È necessario assicurarsi di utilizzare la corretta dipendenza Maven prima di procedere nei documenti (elencati nella pagina della documentazione che ho collegato).

+0

Tale guida suggerisce di utilizzare la tecnologia hotswapping. Ma io non sono interessato a hotswapping di file java come lo sono per ricaricare asset statici. Inoltre, la guida non ha menzionato nulla degli utenti che non utilizzano affatto alcun template. Tutto quello che ho sono file .html regolari. Vale la pena ricordare che ora ho il plugin springloaded definito in Maven e sembra non fare alcuna differenza. – Kaspar

+0

Sì, abbastanza giusto. Mi sono guardato intorno un po 'di più. Hai letto [sezione 20.2 su riavvii automatici] (https://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-devtools.html), in particolare la casella informativa * Triggering un cambiamento*. Lavoro con Eclipse, quindi questa sezione su IntelliJ potrebbe avere più senso per te. – Mike

+0

C'è anche un'altra sezione sulla [esclusione delle risorse statiche (Sezione 20.2.1)] (https://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-devtools.html# utilizzando-boot-devtools-restart-esclusione). Potrebbe anche essere utile. E se tutto il resto fallisce, penso che quella sezione sotto quella su [Watching Additional Paths] (https://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-devtools.html# using-boot-devtools-restart-additional-paths) potrebbe risolvere il tuo problema. – Mike

6

Dalla mia esperienza, le risorse statiche nella directory webapp non sono disponibili se si crea jar senza il plug-in war. Quindi eviterei di usare questa dir. Con Spring Boot è meglio usare la cartella resources/static per le risorse statiche. Ma vuoi che vengano ricaricati mentre esegui l'obiettivo bootRun di Gradle o lo spring-boot:run di Maven.

per raggiungere questo obiettivo utilizzare le seguenti impostazioni per Gradle:

bootRun { 
    addResources = true 
} 

e per Maven:

<plugin> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-maven-plugin</artifactId> 
    <configuration> 
     <fork>true</fork> 
     <addResources>true</addResources> 
    </configuration> 
</plugin> 
+0

Ho le impostazioni che descrivi sopra ma devo ancora CTRL-F9 e aggiorna il browser per ottenere le modifiche a HTML caricate. Qualcos'altro che potrei dover fare per evitare CTRL-F9? –

+0

@AlGrant premendo CTRL + S dovrebbe essere sufficiente – Derp

+0

Ho seguito la tecnica qui: http://stackoverflow.com/questions/43402551/intellijspringbootthymeleafgradle-autoreload-html-resources nota che ho dovuto riavviare Intellij dopo l'impostazione del registro - ora ricarica automaticamente magicamente. –

Problemi correlati