IntelliJ et Tomcat… les fichiers modifiés ne sont pas automatiquement reconnus par Tomcat

J’utilise Intellij Ultimate avec Tomcat et je déploie une guerre. Tout se déploie bien dans le répertoire webapp de tomcat.

Lorsque je change un fichier comme un fichier xhtml, y a-t-il un moyen pour tomcat de détecter automatiquement ce changement? Dès maintenant, je dois copier le fichier à partir de intellij et le copier dans le répertoire où il se trouve dans le répertoire webapp de tomcat. Je sais que certains fichiers nécessiteront une recompilation, mais les fichiers 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 si vous déployez une guerre éclatée . Dans IDEA:

    1. Ouvrez votre configuration Tomcat Run / Debug ( Exécuter> Modifier les configurations )
    2. Accédez à l’onglet “Déploiement”
    3. Dans la section “Déployer au démarrage du serveur”, supprimez (le cas échéant) l’artefact my-webapp-name:war
    4. Cliquez sur l’icône Ajouter, sélectionnez «artefact», puis sélectionnez my-webapp-name:war exploded
    5. Cliquez sur OK (dans la boîte de dialog “Sélectionner les artefacts à déployer”)
    6. Toujours dans la fenêtre de configuration Run / Debug, sélectionnez l’onglet “Serveur”
    7. Au milieu de cet onglet, définissez le paramètre “Désactivation du cadre” sur “Mettre à jour les ressources” ou “Mettre à jour les classes et les ressources”.
      • Mettre à jour les ressources: toutes les ressources modifiées (c’est-à-dire tous les composants de l’application autres que les classes) seront mises à jour.
      • Mettre à jour les classes et les ressources. Toutes les ressources modifiées seront mises à jour. les classes modifiées seront recompilées. Notez que la mise à jour des classes réelles dépend du serveur Web des fonctionnalités. Si je me souviens, Tomcat rechargera les fichiers html / xhtml et jsp, mais pas les servlets ni les classes utilisés par les JSP ou les servlets. Vous devez modifier Tomcat pour utiliser un chargeur de classe dynamic pour cela.
    8. Vous pouvez également définir l’action “On ‘update” également.
      • Cela a déterminé ce qui se passe lorsque vous appuyez sur la mise à jour Icône de mise à jour icône (ou Ctrl + F10 ) dans la fenêtre Exécuter.
      • la boîte de dialog “Afficher la boîte de dialog” détermine si IDEA vous demande chaque fois que vous appuyez sur l’icône de mise à jour
    9. Cliquez sur OK.

    Désormais, chaque fois que vous apportez une modification, IDEA redéploiera le (s) fichier (s) modifié (s) lorsque la trame d’IDEA est désactivée (perte de focus). Cela prend une ou deux secondes, vous le verrez dans la barre d’état inférieure dans IDEA. Évidemment. vous devrez toujours actualiser votre navigateur Web pour qu’il récupère le nouveau fichier (à moins bien sûr que la page ait un rafraîchissement automatique d’ajax comme fetch).

    Une bonne combinaison avec Tomcat consiste à définir “Désactivation de l’image” sur “Mettre à jour les ressources” et l’action “Activer” sur “Redéployer” ou “Redémarrer le serveur”. Cela permet aux pages statiques d’être rapidement mises à jour via la désactivation du cadre. classe mise à jour via l’action ‘update’.

    Une entreprise nommée ZeroTurnaround vend JRebel, une solution dynamic de chargement de classe. Ils ont aussi une série de cinq parties sur le sujet qui est très bonne.

    Permettez-moi de décrire la séquence d’actions en utilisant des captures d’écran:

    1. Ouvrez votre configuration Tomcat Run / Debug (Exécuter> Modifier les configurations)

    entrer la description de l'image ici

    1. Cliquez sur l’icône Ajouter, sélectionnez «artefact», puis sélectionnez pizza_mvc:war exploded : entrer la description de l'image ici

    2. Modifiez “Action de mise à jour” et “Désactivation de la trame”: entrer la description de l'image ici

    3. Chaque fois que vous souhaitez actualiser vos ressources, appuyez sur + F10

    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 cours en mode “Run”. Lorsque je cours en mode debug et que j’appuie sur Ctrl+F10 , il met à jour les classes et les ressources.

    J’ai trouvé un meilleur moyen.

    Dans Eclipse, nous avons automatiquement compilé, compilé et rechargé les fichiers statiques. En fait, les fichiers statiques sont servis directement à partir de src / main / webapp .

    Dans IntelliJ, au lieu de servir directement depuis src / main / webapp , il y a un dossier créé dans target, dans lequel vous aurez une copie de votre src / main / webapp ainsi que d’autres liens contextuels .. web-inf / classes / lib.

    Si vous placez à la place de la cible le résultat de l’artefact éclaté sur src / main / webapp , il ne vous écrasera pas et servira directement, vous n’aurez pas à bashmettez à jour les ressources / mises à jour des ressources et des classes

    Donc, ce que vous devez faire dans IntelliJ est

    1. modifier le répertoire de sortie de l’artefact éclaté en src / main / webapp entrer la description de l'image ici
    2. créer une macro pour enregistrer et recomstackr / comstackr les classes sales (cmd + shift + f9) entrer la description de l'image ici entrer la description de l'image ici
    3. éditez le registre et les préférences pour créer automatiquement et comstackr pendant que l’application est en cours d’exécution (cmd + shift + a – registry). entrer la description de l'image ici entrer la description de l'image ici

    Après cela, si vous avez des tâches qui modifient des fichiers statiques en dehors d’IntelliJ, vous verrez immédiatement les modifications sans passer par IntelliJ et Update Resources . Pour les classes, vous aurez cette macro qui sauvegarde et comstackra (Remarque: / Recomstack: cmd + shift + F9 / cmd + F9 – si vous avez plusieurs éditeurs ouverts, vous verrez que vos éditeurs sales * seront sales et les changements (classes) seront rechargés)