Trabalhar com o Jetty, em um projeto gerenciado pelo Maven, é algo bem simples. Basta configurar o pom.xml com o plugin jetty-maven-plugin. O trecho a seguir é um exemplo de como habilitar o plugin no projeto:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | ... < build > < plugins > < plugin > < groupId >org.mortbay.jetty</ groupId > < artifactId >jetty-maven-plugin</ artifactId > < version >8.1.11.v20130520</ version > </ plugin > </ plugins > </ build > </ project > |
Após configurar o Maven, existem várias formas para trabalhar com o Jetty. Um dos goals mais interessantes é o jetty:run, com ele o Maven roda o projeto sem gerar o war, ou seja, os fontes são implantados "diretamente" no Jetty:
1 | mvn jetty:run |
Depois dessa instrução o Jetty é inicializado (por default na porta 8080) e os fontes do projeto são implantados, acessível pela url http://localhost:8080/. É possível encerrar a execução do Jetty com ctrl-c na console, ou em alguma outra aba acionar o goal jetty:stop, veja:
1 | mvn jetty:stop |
Essa estratégia é interessante para produtividade durante o desenvolvimento, caso alguma classe seja modificada o plugin do Jetty implanta a mudança, realiza o hot deploy.
Outra alternativa é executar o Jetty e realizar o deploy do war, após a geração do pacote pelo Maven.
1 | mvn jetty:run-war |
Essa abordagem faz sentido quando não é necessário realizar hot deploy de mudanças após o deploy no Jetty.
O plugin suporta diversas configurações, como por exemplo a porta de execução do Jetty e tempo para verificar fontes (hot deploy). Veja um exemplo do plugin com configurações complementares:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | ... < plugin > < groupId >org.mortbay.jetty</ groupId > < artifactId >jetty-maven-plugin</ artifactId > < version >8.1.11.v20130520</ version > < configuration > < scanIntervalSeconds >10</ scanIntervalSeconds > < webApp > <!-- Contexto da aplicação --> < contextPath >/${project.artifactId}</ contextPath > </ webApp > < connectors > < connector implementation = "org.eclipse.jetty.server.nio.SelectChannelConnector" > <!-- Porta do Jetty --> < port >8000</ port > < maxIdleTime >60000</ maxIdleTime > </ connector > </ connectors > </ configuration > </ plugin > ... |
De acordo com a configuração do plugin acima, o Jetty vai rodar na porta 8000 utilizando o nome do artefato como contexto web, sendo que cada conexão com container (Socket) tem um timeout de 60 segundos. Além disso o plugin verifica modificações no código a cada 10 segundos, para realizar o hot deploy.
Compartilhei um projeto Java web no github, que demonstra como funciona a integração do Maven com o Jetty. Saiba mais detalhes sobre o jetty-maven-plugin, na página do plugin.
http://twitter.com/edermag
http://www.yaw.com.br
No comments:
Post a Comment