IntelliJ e Tomcat… arquivos alterados não são reconhecidos automaticamente pelo Tomcat

Estou executando o Intellij Ultimate com o Tomcat e implantando uma guerra. Tudo se aplica bem ao diretório webapp do tomcat.

Quando eu mudo um arquivo como um arquivo xhtml, existe uma maneira de o Tomcat pegar automaticamente essa mudança? A partir de agora eu preciso copiar o arquivo do intellij e copiá-lo para o diretório onde ele reside no diretório webcat do tomcat. Eu sei que existem certos arquivos que precisam de uma recompilation, mas os xhtml não são um deles.

Isso não pode ser feito se você implantar uma guerra com o IntelliJ IDEA. No entanto, isso pode acontecer se você implantar uma guerra explodida . Em IDEA:

  1. abra sua configuração de Execução / Depuração do Tomcat ( Executar> Editar Configurações )
  2. Vá para a guia “Implantação”
  3. Na seção “Implantar na boot do servidor”, remova (se houver) o artefato my-webapp-name:war
  4. Clique no ícone Adicionar, selecione ‘artefato’ e selecione my-webapp-name:war exploded
  5. Clique em OK (na checkbox de diálogo “Selecionar Artefatos a Serem Implantados”)
  6. Ainda na Janela de Configuração de Execução / Depuração, selecione a guia “Servidor”
  7. No meio dessa guia, altere a configuração “On frame Deactivation” para “Update resources” ou “Update Classes and Resources”
    • Atualizar resources: todos os resources alterados (ou seja, todos os componentes do aplicativo, exceto as classs) serão atualizados.
    • Atualize classs: e resources. Todos os resources alterados serão atualizados; classs alteradas serão recompiladas. Observe que, se as classs reais serão atualizadas, depende do servidor da Web de resources. Se bem me lembro, o Tomcat irá recarregar os arquivos html / xhtml e jsp, mas não os Servlets ou classs que os JSPs ou Servlets usam. Você precisa modificar o Tomcat para usar um classloader dynamic para isso.
  8. Você também pode definir a ação “Ativar atualização” também.
    • Isso determinou o que acontece quando você atinge a Atualização Atualizar ícone ícone (ou Ctrl + F10 ) na janela Executar.
    • o “Show dialog” determina se o IDEA lhe avisa toda vez que você apertar o ícone de atualização
  9. Clique OK.

Agora, sempre que você fizer uma alteração, o IDEA reimplementará o (s) arquivo (s) alterado (s) quando o quadro do IDEA for desativado (isto é, perder o foco). Leva um segundo ou dois, você verá na barra de status inferior no IDEA. Obviamente. você ainda precisará atualizar seu navegador da web para que ele obtenha o novo arquivo (a menos que a página tenha uma atualização automática de ajax como busca).

Uma boa combinação com o Tomcat é definir “Na desativação do quadro” para “Atualizar resources” e a ação “Ativar atualização” para “Reimplantar” ou “Reiniciar servidor”. Isso permite que as páginas estáticas sejam rapidamente atualizadas por desativação de frameworks e class atualizada através da ação ‘atualizar’.

Uma empresa chamada ZeroTurnaround vende o JRebel, que é uma solução dinâmica de carregador de classs. Eles também têm uma série de cinco partes sobre o assunto que é muito bom.

Deixe-me descrever a sequência de ações usando capturas de canvas:

  1. Abra sua configuração Executar / Depurar do Tomcat (Executar> Editar Configurações)

insira a descrição da imagem aqui

  1. Clique no ícone de adição, selecione ‘artefato’ e selecione pizza_mvc:war exploded : insira a descrição da imagem aqui

  2. Modifique ‘On update action’ e ‘On frame diactivation’: insira a descrição da imagem aqui

  3. Toda vez que você quiser atualizar seus resources, pressione + F10

Se você quiser atualizar classs e resources, execute o Tomcat no modo de Depuração . Neste modo o IntelliJ atualiza classs e resources sem problemas (hot swap).

Tem o mesmo problema. O IntelliJ não atualizou meu projeto, porque eu corro como “modo de execução”. Quando eu corro no modo de debugging e pressiono Ctrl+F10 , ele atualiza classs e resources.

Eu encontrei um caminho melhor.

No Eclipse nós construímos automaticamente, compilamos + recarregamos arquivos estáticos. Arquivos realmente estáticos são servidos diretamente de src / main / webapp .

No IntelliJ em vez de servir diretamente de src / main / webapp , existe uma pasta criada no destino, na qual você terá uma cópia do seu src / main / webapp e também outro contexto relacionado .. web-inf / classs / lib.

Se você colocar em vez do alvo a saída do artefato explodido para src / main / webapp , ele não sobrescreverá seus arquivos de origem, e ele será exibido diretamente, você não terá que clicar ematualizar resources / atualizar resources e classs

Então, o que você precisa fazer no IntelliJ é

  1. modificar o diretório de saída de artefato explodido para src / main / webapp insira a descrição da imagem aqui
  2. crie uma macro para salvar e recompilar / compilar classs sujas (cmd + shift + f9) insira a descrição da imagem aqui insira a descrição da imagem aqui
  3. edite o registro e as preferências para construir automaticamente e construir enquanto o aplicativo estiver em execução (cmd + shift + a – registry). insira a descrição da imagem aqui insira a descrição da imagem aqui

Depois disso, se você tiver trabalhos que alteram arquivos estáticos de fora do IntelliJ, você verá as alterações imediatamente sem acessar o IntelliJ e Update Resources , e para as classs que possui a macro que salva e compila (Observação: você também pode clicar em Compilar / Recompile: cmd + shift + F9 / cmd + F9 – se você tiver vários editores abertos, verá que seus editores sujos * não estarão sujos, e as alterações (classs) serão recarregadas)

Intereting Posts