Blog do Urubatan
msgbartop
Desenvolvedor, Palestrante, Escritor, Nerd Assumido e Pai do Marcus :D
msgbarbottom

24 Oct 06 Maven 2 novamente -> mvn jetty:run

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 :D

Você gostou deste post? Compartilhe:
Se você gostou deste post, talvez você queira assinar o feed RSS! Você também pode me seguir no Twitter.

Tags:

Reader's Comments

  1. |

    [...] Urubatan`s Weblog » Maven 2 novamente -> mvn jetty:run (tags: maven2 jetty plugin jee web jsp servlet urubatan blog article) [...]

  2. |

    [...] 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 [...]

  3. |

    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

  4. |

    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 …

  5. |

    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?

  6. |

    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.

  7. |

    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.

  8. |

    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.

  9. |

    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?

  10. |

    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!!!

  11. |

    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 :D

  12. |

    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.

  13. |

    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 )…

  14. |

    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?

  15. |

    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

    • |

      Botando o plugin dentro de pode ser a causa do seu problema.

      Tente colocar dentro de direto, pulando o elemento .