J'ai réussi à faire fonctionner cela sur mon environnement de développement à l'aide de l' agent JVM Spring Loaded . Bien que je développe des applications Web Spring, la description de ce projet mentionne qu'il est
utilisable sur n'importe quel bytecode pouvant s'exécuter sur une JVM
En utilisant la configuration suivante, j'ai pu obtenir des modifications à publier automatiquement sur une instance Tomcat attachée (la méthode habituelle Eclipse WTP). J'utilise Spring Tool Suite 3.7.3 basé sur Eclipse Mars.2 (4.5.2).
- Téléchargez la dernière version JAR de Spring Loaded à partir de leur projet Github . Cela a été testé avec springloaded-1.2.5.RELEASE.jar.
- Configurer un serveur Tomcat dans Eclipse comme d'habitude (testé avec Tomcat 8.0.30)
- Ouvrez la page de configuration du serveur Tomcat dans Eclipse (double-cliquez sur l'instance du serveur dans l'onglet "Serveurs").
- Dans la section "Options du serveur", décochez "Rechargement automatique des modules par défaut".
- Remarque: Si vous avez déjà ajouté des modules Web au serveur, vous devrez peut-être désactiver le «rechargement automatique» sur eux individuellement via l'onglet «Modules» (en bas de la fenêtre de la page de configuration).
- Dans la section "Informations générales", cliquez sur "Ouvrir la configuration de lancement"
- Dans l'onglet "Arguments", ajoutez ce qui suit à la fin des "arguments VM":
-javaagent:/path/to/downloaded/springloaded-1.2.5.RELEASE.jar -noverify
- Pour permettre la surveillance des JAR en plus des
.class
fichiers du projet , configurez l' -Dspringloaded=watchJars=
argument VM en fonction des commentaires de ce problème .
Démarrez le serveur et publiez-y les projets d'application Web dynamique comme d'habitude. Encore une fois, j'ai pu tester cela avec les applications Web Spring. Par exemple, la modification du code, l'ajout / la soustraction de méthodes, etc. dans les classes @Controller ont été appliquées presque instantanément après avoir enregistré le fichier et les builds Eclipse et publié la classe modifiée. Enfin, la section FAQ du projet Spring Loaded a mentionné quelques cas où les choses ne se rechargent pas, donc cela nécessiterait un redémarrage du serveur / de l'application. Mais ces exceptions sont beaucoup moins fréquentes.
Une dernière remarque: cela ne fonctionne PAS avec le serveur Pivotal tc intégré ou le serveur VMware vFabric tc fourni avec STS. Pour ces serveurs, il existe une option «Activer le rechargement basé sur l'agent Java (expérimental)», mais qui utilise l'ancienne version 1.2.0 de Spring Loaded, qui ne fonctionnait pas pour moi.