Existe alguma maneira de acionar o Maven Appengine Devserver para atualizar automaticamente os arquivos estáticos?

A versão mais recente do plugin maven permitiu a atualização do código a cada 5s, o que é uma grande melhoria. Mas, a menos que eu esteja configurando isso errado, parece que não há alterações no arquivo estático, como o JavaScript em andamento no trabalho, conectando-se ao código do aplicativo.
Existe alguma maneira de alterar esse comportamento ou eu só preciso esperar por uma nova versão?

Atualizações automáticas não podem ser feitas usando apenas o devserver anexado agora. Estritamente falando, precisamos esperar.

Mas você pode conseguir o efeito da atualização sem problemas de html / js / css / etc, substituição de código java quente, etc. com a configuração abaixo.

  1. Configure o Apache httpd ou Nginx para fornecer código estático diretamente de sua origem de guerra e rotear para o mecanismo de aplicativos para servlets. No meu caso, todos os html são diretamente acessíveis a partir do diretório webapp e os servlets são chamados via / sim /. Usando o nginx e a porta 7070, minha configuração nginx funcional se parece com:

    server { listen 7070; root /home/pchauhan/Projects/my-company/my-mvn-gae-project/my-mvn-gae-project-war/src/main/webapp; location /sim/ { proxy_pass http://localhost:8080/sim/; } } 

Use esta documentação do nginx para mais configurações.

Configure o Eclipse e o GAE separadamente.

  1. Agora, você pode fazer alterações diretamente na origem e atualizá-las, tanto para html (via nginx) quanto para servlets (via devserver).
  2. Adicione esta pasta webapp ao seu Chrome Dev Tools, Sources Workspace e a vida será mais fácil. Pequenas alterações podem ser salvas diretamente do chrome para src via ctrl

Observe que, embora isso seja ótimo, você deve testar seu aplicativo apenas uma vez em 8080 (devserver port) antes de fazer o upload, caso haja um bug na configuração do maven, e o destino não estiver sendo criado / exibido corretamente.

Alternate Idea for syncing : Se você não quiser usar nginx / httpd por algum motivo, você pode adicionar target … webapp ao espaço de trabalho chrome, trabalhar diretamente lá para atualizar sem problemas e usar o lsyncd para sincronizar o target de volta ao src. Eu não tentei ainda, mas parece viável, embora um pouco arriscado.

Até agora, a melhor maneira que encontrei foi configurar abaixo as inputs em pom.xml. Isto irá construir automaticamente seus arquivos estáticos e reflete na página.

  org.apache.maven.plugins maven-antrun-plugin 1.7   process-classs  run                    

E outra input depois

     org.eclipse.m2e lifecycle-mapping 1.0.0      org.apache.maven.plugins maven-antrun-plugin [1.6,)  run     true          

Isso está funcionando bem. Assim que todos os arquivos estáticos foram alterados e salvos, ele foi refletido na página.

Como o PoojaC20, eu também não consegui trabalhar com o devserver sozinho, mas acabei com uma solução alternativa diferente, que eu pensei em compartilhar caso outros achassem útil.

Agora, hospedo meus arquivos estáticos de desenvolvimento fora do devserver do GAE usando o grunt-serve . Isso permite um grande número de vantagens, incluindo:

  1. Atualização automática de página quando arquivos estáticos foram alterados – não é necessário pressionar o botão Atualizar.
  2. Conversão automática de CSS avançado, como LESS
  3. Conversão automática de linguagens compiláveis ​​em javascript como o CoffeeScript
  4. Mecanismo para minificação e CDN-ification quando o desenvolvimento é feito.

A implicação mais profunda do que foi dito acima é que precisei sair da autenticação baseada em session para sistemas de autenticação baseados em OAuth ou OpenID Connect e fazer com que todas as minhas chamadas de serviço da Web sejam compatíveis com CORS. Isso é algum trabalho, mas também tem uma vantagem muito profunda:

  1. Uma vez que seu servidor web tenha se movido para a autenticação baseada no OpenID Connect, ele agora pode se conectar de forma idêntica a clientes nativos (por exemplo, móveis) ou clientes baseados na web!