Consegui fazer isso funcionar em meu ambiente de desenvolvimento usando o agente JVM Spring Loaded . Embora eu desenvolva aplicativos da web Spring, a descrição do projeto menciona que é
utilizável em qualquer bytecode que pode ser executado em uma JVM
Usando a configuração a seguir, consegui obter alterações para publicar automaticamente em uma instância do Tomcat anexada (o método usual do Eclipse WTP). Estou usando o Spring Tool Suite 3.7.3 baseado no Eclipse Mars.2 (4.5.2).
- Baixe a versão mais recente do JAR do Spring Loaded de seu projeto Github . Isso foi testado com springloaded-1.2.5.RELEASE.jar.
- Configure um servidor Tomcat no Eclipse normalmente (testado com Tomcat 8.0.30)
- Abra a página de configuração do servidor Tomcat no Eclipse (clique duas vezes na instância do servidor na guia "Servidores").
- Na seção "Opções do servidor", desmarque "Módulos recarregados automaticamente por padrão".
- Nota: Se você já tiver módulos da web adicionados ao servidor, pode ser necessário desabilitar o "Auto Reload" neles individualmente por meio da guia "Módulos" (na parte inferior da janela da página de configuração).
- Na seção "Informações gerais", clique em "Abrir configuração de inicialização"
- Na guia "Argumentos", adicione o seguinte ao final dos "Argumentos da VM":
-javaagent:/path/to/downloaded/springloaded-1.2.5.RELEASE.jar -noverify
- Para permitir que os JARs sejam observados além dos
.class
arquivos do projeto , configure o -Dspringloaded=watchJars=
argumento VM de acordo com os comentários deste problema .
Inicie o servidor e publique projetos de aplicativos dinâmicos da Web nele como de costume. Mais uma vez, fui capaz de testar isso com aplicativos da web Spring. Por exemplo, modificar o código, adicionar / subtrair métodos, etc. nas classes @Controller foram aplicados quase que instantaneamente depois que salvei o arquivo e o Eclipse construiu e publicou a classe alterada. Por último, a seção FAQ do projeto Spring Loaded mencionou alguns casos em que as coisas não recarregam, portanto, seria necessário reiniciar o servidor / aplicativo. Mas essas exceções são muito menos frequentes.
Mais uma observação: isso NÃO funciona com o Pivotal tc Server ou VMware vFabric tc Server que vem com o STS. Para esses servidores, há uma opção "Habilitar recarregamento baseado em Agente Java (experimental)", mas que usa a versão 1.2.0 anterior do Spring Loaded, que não funcionou para mim.