J'exécute Intellij Ultimate avec Tomcat et déploie une guerre. Tout se déploie correctement dans le répertoire webapp de tomcat.
Lorsque je change un fichier comme un fichier xhtml, existe-t-il un moyen pour Tomcat de récupérer automatiquement ce changement? À partir de maintenant, je dois copier le fichier d'Intellij et le copier dans le répertoire où il réside dans le répertoire de l'application Web Tomcat. Je sais qu'il y a certains fichiers qui auront besoin d'une recompilation, mais les xhtml n'en font pas partie.
Cela ne peut pas être fait si vous déployez une guerre avec IntelliJ IDEA. Cependant, cela peut être le cas si vous déployez une guerre éclatée . Dans IDEA:
my-webapp-name:war
my-webapp-name:war exploded
Désormais, à chaque fois que vous effectuez une modification, IDEA redéploiera le (s) fichier (s) modifié (s) lorsque le cadre d'IDEA est désactivé (c'est-à-dire perd le focus). Cela prend une seconde ou deux, vous le verrez dans la barre d'état inférieure d'IDEA. Évidemment. vous devrez toujours actualiser votre navigateur Web pour qu'il récupère le nouveau fichier (sauf bien sûr si la page dispose d'un rafraîchissement automatique d'ajax comme fetch).
Une bonne combinaison avec Tomcat consiste à définir "Désactivation du cadre" sur "Mettre à jour les ressources" et l'action "Lors de la mise à jour" sur "Redéployer" ou "Redémarrer le serveur". Cela permet aux pages statiques d'être rapidement mises à jour via la désactivation du cadre, et classe mise à jour via l'action 'update'.
Une société nommée ZeroTurnaround vend JRebel, une solution de chargeur de classe dynamique. Ils ont également une série en cinq parties sur le sujet qui est très bien.
la source
Error: Artifact 'my-webapp-name:war exploded' has invalid extension
comment réparer?Si vous souhaitez mettre à jour les classes et les ressources, exécutez Tomcat en mode débogage . Dans ce mode, IntelliJ met à jour les classes et les ressources sans problème (échange à chaud).
J'ai le même problème. IntelliJ n'a pas mis à jour mon projet, car je l'exécute en "mode Exécution". Lorsque je cours en mode débogage et que j'appuie sur Ctrl+ F10, cela met à jour les classes et les ressources.
la source
J'ai trouvé un meilleur moyen.
Dans Eclipse, nous avons automatiquement construit, compilé et rechargé des fichiers statiques. En fait, les fichiers statiques sont servis directement depuis src / main / webapp .
Dans IntelliJ, au lieu de servir directement à partir de src / main / webapp , il y a un dossier créé dans target, dans lequel vous aurez une copie de votre src / main / webapp et aussi d'autres contextes liés .. web-inf / classes / lib.
Si vous placez à la place de la cible la sortie de l'artefact éclaté dans src / main / webapp , cela n'écrasera pas vos fichiers source, et il servira directement, vous n'aurez pas à frapper - mettre à jour les ressources / mettre à jour les ressources et les classes
Donc, ce que vous devez faire dans IntelliJ est
Après cela, si vous avez des travaux qui modifient des fichiers statiques en dehors d'IntelliJ, vous verrez immédiatement les changements sans accéder à IntelliJ et Update Resources , et pour les classes, vous avez cette macro qui enregistre et compile (Remarque: vous pouvez également simplement appuyer sur Compiler / Recompiler: cmd + shift + F9 / cmd + F9 - si vous avez plusieurs éditeurs ouverts, vous verrez que vos éditeurs sales * ne seront pas sales, et les changements (classes) seront rechargés)
la source
Cela n'est possible que lorsque vous déployez le dossier war éclaté, avez activé le rechargement à chaud et démarrez tomcat en mode débogage.
Voici les étapes pour y parvenir.
la source
si vous avez des fichiers en plusieurs parties que vous souhaitez voir / lire tout de suite, téléchargez directement dans le dossier cible. * (ne changez l'emplacement d'écriture que dans le dossier cible / static /)
vous pourrez voir votre fichier immédiatement sans avoir à redémarrer votre IDE
la source