Não me lembro se já falei do Maven 2 para desenvolvimento Java, mas caso já tenha falado me repito: É uma ferramenta incrível para gerenciamento de estrutura de projetos e de dependências.
Quantas vezes você já não se pegou fazendo um control+c e control+v em um projeto, deletando as classes na mão e aí começando outro depois de renomear tudo que tem que renomear? Então, com o maven e um comando você poderia simplesmente através de uma estrutura pré-definida criar um projeto inteiro.
Onde trabalho temos um cliente relativamente chato que define os frameworks que devemos utilizar, a estrutura que o nosso projeto deve ter, em qual lugar a camada de serviço deve se encontrar e tudo mais… Então ao invez de ele mandar uma pasta inteira com o projeto e tudo mais ele simplesmente manda um Archetype do Maven 2 e através de um comando agente gera o projeto de onde quer que esteja.
Bom, instalar o Maven é simplão você só baixa, descompacta e adiciona ele a seu Path.
Criação de um projeto simples a partir de um archetype-quickstart é efetuada utilizando um comando como o seguinte:
mvn archetype:generate -DgroupId=br.eximia -DartifactId=simple -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
Você percebe que os parâmetros são bastante auto-explicativos. Grupo, artefato e o nome do archetype do Maven.
Ao rodar o comando a seguir você só assiste o Maven criando uma pasta com toda a estrutura do seu projeto para você, até com um Hello World inclusive.
Lembrando que o Maven 2 não escolhe IDE e nem nada então uma coisa interessante após criar o seu projeto é destinar o mesmo ao Eclipse. Isto é feito através do comando:
mvn eclipse:eclipse
Aí você simplesmente importa este arquivo no Eclipse como um projeto Maven já existente. Para te ajudar neste projeto é bastante interessante que você instale o plugin m2Eclipse adicionando este repositorio aos seus updates e fazendo um next, next, next básico.
Note pela estrutura do projeto criado pelo Maven que este é um projeto de Console, então para a criação de um projeto web basta alterar o archetype, veja o comando:
mvn archetype:generate -DgroupId=br.eximia -DartifactId=simpleWeb -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false
Note que o comando é exatamente o mesmo, eu só alterei o achetype, e aí temos um diretório chamado webapp e tudo mais que um projeto web precisa.
Como não é só porque um projeto é Web que ele tem código Java escrito o archetype não gera para você a pasta src/main/java, então você abre a sua estrutura e cria manualmente dentro de main a pasta java. Logo dentro de main haverão as pastas java, resources e webapp. De quebra eu já crio dentro de /src o diretório test e dentro deste o diretório java para abrigar os testes unitários. Então esta parte ficou com /src/test/java.
Agora um detalhe MUITO importante, da mesma forma que o comando para criar o projeto Console e o projeto web é diferente, o comando para fazer sua aplicação web suportar o Eclipse também é um pouco diferente.
Veja:
mvn eclipse:eclipse -Dwtpversion=2.0
Na verdade o comando é exatamente o mesmo, mas adicionamos um parametro que configura a versão do WTP, que é um plugin do Maven e do Eclipse para a configuração de aplicações web.
Após rodar este comando e importar o projeto no Eclipse verá que entenderá a estrutura do projeto com mais assertividade, verá também que ele gera os arquivos .classpath e .project do Eclipse.
Simples assim, agora é só colocar todas as dependencias do Maven dentro do seu POM que o Eclipse automaticamente baixará para o seu repositório local.
O legal que a partir de agora você já pode criar um servidor no seu eclipse, adicionar o projeto a ele e simplesmente iniciar o projeto, no meu caso o link http://localhost:8080/simpleWeb/, já estava funcionando com um Hello World.
Agora vem o motivador deste post. O site http://www.springfuse.com/, criar através de um archetype maven um projeto inteiro baseado em Spring, Spring WF, Primefaces e JPA, com um ótima estrutura que vale pena dar uma estudada.
É fantástico.
Tags: criação, criação de projetos, maven 2, maven2, projetos