Me las arreglé para que esto funcione en mi entorno de desarrollo utilizando el agente JVM Spring Loaded . Si bien desarrollo aplicaciones web Spring, la descripción de ese proyecto menciona que es
utilizable en cualquier código de bytes que pueda ejecutarse en una JVM
Usando la siguiente configuración, pude obtener cambios para publicarlos automáticamente en una instancia de Tomcat adjunta (el método habitual de Eclipse WTP). Estoy usando Spring Tool Suite 3.7.3 basado en Eclipse Mars.2 (4.5.2).
- Descargue el último lanzamiento JAR de Spring Loaded de su proyecto Github . Esto ha sido probado con springloaded-1.2.5.RELEASE.jar.
- Configure un servidor Tomcat en Eclipse como de costumbre (probado con Tomcat 8.0.30)
- Abra la página de configuración del servidor Tomcat en Eclipse (haga doble clic en la instancia del servidor dentro de la pestaña "Servidores").
- En la sección "Opciones del servidor", desmarque "Los módulos se recargan automáticamente de forma predeterminada".
- Nota: Si ya ha agregado módulos web al servidor, es posible que deba deshabilitar la "Recarga automática" en ellos individualmente a través de la pestaña "Módulos" (en la parte inferior de la ventana de la página de configuración).
- En la sección "Información general", haga clic en "Abrir configuración de lanzamiento".
- En la pestaña "Argumentos", agregue lo siguiente al final de los "Argumentos de la máquina virtual":
-javaagent:/path/to/downloaded/springloaded-1.2.5.RELEASE.jar -noverify
- Para permitir que se vean los
.class
archivos JAR además de los archivos del proyecto , configure el -Dspringloaded=watchJars=
argumento de VM según los comentarios de este problema .
Inicie el servidor y publique proyectos de aplicaciones web dinámicas en él como de costumbre. Nuevamente, pude probar esto con las aplicaciones web de Spring. Por ejemplo, la modificación de código, la adición / sustracción de métodos, etc. en las clases de @Controller se aplicaron casi instantáneamente después de guardar el archivo y Eclipse compila y publica la clase cambiada. Por último, la sección de preguntas frecuentes del proyecto Spring Loaded mencionó algunos casos en los que las cosas no se recargan, por lo que sería necesario reiniciar el servidor / aplicación. Pero esas excepciones son mucho menos frecuentes.
Una nota más: esto NO funciona con el servidor Pivotal tc integrado o el servidor VMware vFabric tc que viene con STS. Para esos servidores, hay una opción "Habilitar la recarga basada en el Agente Java (experimental)", pero usa la versión 1.2.0 anterior de Spring Loaded, que no me funcionó.