J'utilise Intellij Ultimate avec Tomcat et déploie une guerre. Tout se passe bien dans le répertoire webapp de Tomcat.
Lorsque je modifie un fichier comme un fichier xhtml, existe-t-il un moyen pour Tomcat de prendre automatiquement en compte ce changement? À partir de maintenant, je dois copier le fichier depuis intellij et le copier dans le répertoire de son emplacement dans le répertoire Webapp de Tomcat. Je sais que certains fichiers nécessiteront une recompilation, mais ceux de xhtml n'en font pas partie.
Cela ne peut pas être fait si vous déployez une guerre avec IntelliJ IDEA. Cependant, il peut être si vous déployez une guerre éclatée . Dans IDEA:
my-webapp-name:war
(le cas échéant).my-webapp-name:war exploded
Désormais, chaque fois que vous apportez une modification, IDEA redéploiera le ou les fichiers modifiés lorsque le cadre d’IDEA est désactivé (c’est-à-dire qu’il perd le focus). Cela prend une seconde ou deux, vous le verrez dans la barre d'état inférieure dans IDEA. Évidemment. vous aurez toujours besoin d'actualiser votre navigateur Web pour qu'il récupère le nouveau fichier (sauf si la page a une actualisation automatique comme ajax, comme fetch).
Une bonne combinaison avec Tomcat consiste à définir "Mise à jour des ressources" sur "Mise à jour des ressources" et sur "Redéployer" ou "Redémarrer le serveur" pour l'action "Mise à jour des ressources". classe mise à jour via l'action 'update'.
Une société nommée ZeroTurnaround vend JRebel qui est une solution de chargeur de classe dynamique. Ils ont également un série en cinq parties sur le sujet c'est très bien.
Permettez-moi de décrire la séquence d'actions à l'aide de captures d'écran:
Si vous souhaitez mettre à jour des classes et des ressources, exécutez Tomcat en mode débogage . . Dans ce mode IntelliJ, mettez à 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 cours en tant que "mode d'exécution". Lorsque je suis en mode débogage et que je clique sur Ctrl+F10, il met à jour les classes et les ressources.
J'ai trouvé un meilleur moyen.
Dans Eclipse , nous avons automatiquement construit, compilé + rechargé des fichiers statiques. En réalité, les fichiers statiques sont servis directement à partir de src/main/webapp .
Dans IntelliJ au lieu de servir directement à partir de src/main/webapp , il y est un dossier créé dans target, dans lequel vous aurez une copie de votre src/main/webapp ainsi que d’autres contextes liés. web-inf/classes/lib.
Si vous placez à la place de la cible la sortie de l'artefact éclaté à src/main/webapp , les fichiers source ne seront pas écrasés et seront directement utilisés. , vous n'aurez pas besoin de frapper - mettez à jour les ressources/mettez à 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 extérieurs à IntelliJ , vous verrez les modifications immédiatement sans passer par IntelliJ et Update Resources , et pour les classes. vous avez cette macro qui enregistre et compile (Remarque: vous pouvez également appuyer sur Compiler/Recompiler: cmd + décalage + 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)