Yeap, mais um post sobre o Maven 2
O maven 2 alem de todos os beneficios ja conhecidos por nós, aquele monte de relatórios, build simplificado, …
ainda tem um monte de plugins bastante interessantes, e que facilitam bastante o desenvolvimento, um deles é este plugin do Jetty para o Maven 2.
Este plugin do Jetty faz o seguinte, quando é executada a task:
mvn jetty:run
ele compila toda a aplicação, e inicializa um container Jetty rodando apenas aquela aplicação para facilitar os testes.
Ajuda bastante mesmo, não precisa ficar instalando servidores de desenvolvimento, …
a ultima versão deste plugin roda com o Jetty 6, suporte a Servlet 2.5 e JSP 2.1, lógico que isto dependendo da versão da app web declarada no web.xml …
Para usar este pugin é bem fácil até, basta dentro do pom.xml adicionar as seguintes linhas:
1 2 3 4 | <plugin> <groupId>org.mortbay.jetty</groupId> <artifactId>maven-jetty-plugin</artifactId> </plugin> |
entre as tags <plugins> e </plugins> da configuração de build.
e esta tudo pronto para rodar a sua aplicação!
mas o motivo deste post é o seguinte:
se você estiver desenvolvendo uma aplicação JSF, vai passar algumas horas ou até 2 dias como aconteceu com o palhaço aqui tentando descobrir por que o FDP do Jetty não encontra a tag library http://java.sun.com/jsf/core e fica dando um tal de erro PWC6188 ja que a *&^*&^#@#$ do jar esta no lugar certinho, e o tld esta dentro do jar do myfaces …
até que em algum momento, você vai descobrir que de acordo com a especificação de JSP 2.1 e JSF 1.2 os jars da implementação de JSF utilizada não devem estar dentro da aplicação WEB, e sim devem ser fornecidos pelo container, ou seja, eles tem que estar presentes no container …
e como o Jetty utiliza o compilador do GlassFish que é a implementação de referencia e se comporta exatamente como esta escrito na especificação, provavelmente mais alguem ja ficou com cara de troxa na frente da maquina como eu por causa desta pequena alteração na especificação …
e como resolver isto?
bom, é só voltar ao pom.xml, e mudar o código para o seguinte:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <plugin> <groupId>org.mortbay.jetty</groupId> <artifactId>maven-jetty-plugin</artifactId> <dependencies> <dependency> <groupId>org.apache.myfaces.core</groupId> <artifactId>myfaces-impl</artifactId> <version>1.1.4</version> </dependency> <dependency> <groupId>org.apache.myfaces.core</groupId> <artifactId>myfaces-api</artifactId> <version>1.1.4</version> </dependency> </dependencies> </plugin> |
Agora os jars da implementação de JSF utilizada estão no classpath do container, e tudo funciona perfeitamente!
Espero que esta dica poupe algumas horas de trabalho a alguns de vocês, ja que eu ja passei algumas horas procurando isto
Tags: Java
[...] Urubatan`s Weblog » Maven 2 novamente -> mvn jetty:run (tags: maven2 jetty plugin jee web jsp servlet urubatan blog article) [...]
[Tradutor]
[...] Maven 2 novamente -> mvn jetty:run , To Maven or not To Maven 2.0 e To Maven or not To Maven? Algumas dicas para quem quer usar o Maven, e também algumas perguntas para quem ja usa a mais tempo que eu, pq eu to só começando nisto [...]
[Tradutor]
E quem usa o tomahawk e o Jetty 6, como eu, mas não usa Maven? Meu build é feito pela ant ( Exadel ). Não consigo iniciar o Jetty de jeito nenhum. Alguma dica ?
Obrigado,
Márcio
[Tradutor]
acho que sem o maven ainda não tem como startar o jetty6 de dentro do eclipse …
os plugins que encontrei eram apenas para o jetty 5 …
[Tradutor]
Estou desenvolvendo servlets e usando o maven com o plugin do jetty. Mas quando eu recompilo as classes ele não faz um redeploy. O que está errado?
[Tradutor]
Como esta descrito na página: http://www.mortbay.org/maven-plugin/run-mojo.html
O auto reload do contexto é desabilitado por padrão, mas você pode setar a propriedade scanIntervalSeconds do plugin do jetty para qualquer valor maior que “0″ como demonstrado nesta URL para habilitar isto.
[Tradutor]
Então, se eu quiser que ele faça um scan a cada 5 segundos, por exemplo, o comando seria: mvn jetty:run -DscanIntervalSeconds=5. É isso mesmo? Porque não deu certo pra mim.
[Tradutor]
Se eu não estou enganado, esta configuração precisa estar no POM, acho que o plugin não busca das variáveis de sistema, ou pelo menos o nome completo para setar como variável de sistema não seria este …
Eu coloquei a configuração no POM como no exemplo, e funcionou beleza.
[Tradutor]
Hahahaha
Sei que é antigo Uruba, mais merece nota máxima, ou seja , 10!
Parabéns, eu perdi apenas alguns minutos(uns 40 minutos) tentando + google + lendo!
=)
Grato!!
Vou “linkar” lá pro meu blog.
Quer fazer um BlogRoll?
[Tradutor]
Amigo, tu conseguiu usar o plugins do Maven para o Eclipse mais de 20 minutos?
É Impressionante como é bugado aqui.
No meu computador da varios NPE, no meu notebook tambem , no trabalho tambem…
Incrivel!!!
[Tradutor]
Alexandre, não usei o plugin não, o que eu uso é mvn eclipse:eclipse para gerar o projeto do eclipse a partir do pom
[Tradutor]
Eu uso um plugin do Maven para o Eclipse. Não sei se é a esse que você se refere, mas ele permite fazer uma busca pelas dependências e adicioná-las ao POM automaticamente.
Às vezes dá uns NullPointerException, mas em geral funciona bem. Tem me ajudado muito.
[Tradutor]
Otavio, é esse mesmo.
Comigo é absurdo os inúmeros erros que acontecem em diferentes maquinas.
Ele é muito bom, porem do nada da uns erros e faz uma bagunça no projeto inteiro.
Quase sempre tenho que ir para o prompt e executar tudo na mão.
Ja pensei em voltar para o ant varias vezes.
O Ant é muito bom e completo, mas o desgracado do maven2 é quase uma perfeição!…
Que dilema..
So não volto para o Ant porque odeio a lerdeza do GoogleCode para upload/download de jars…(nao sei até quando vou me segurar )…
[Tradutor]
boa tarde, estou começando no maven, e na oto conseguindo declarar as variaveis,
como eu faço, ja peguei varios tutoos e nada ate agora. alguen pode me dar uma força?
[Tradutor]
Quando eu rodo
mvn jetty:run
obtenho o seguinte erro:
Invalid mojo or lifecycle phase: jetty:run
Original error message was: Failed to find plugin for prefix: jetty. Reason: Cannot find plugin with prefix: jetty
alguma dica?? Obrigado
[Tradutor]
Botando o plugin dentro de pode ser a causa do seu problema.
Tente colocar dentro de direto, pulando o elemento .
[Tradutor]