Afinal para que serve o Maven?
Nao consigo tirar essa duvida e já estive a ver alguns tutoriais,mas nenhum foi especifico para a minha duvida.
Ora pelo que eu percebi ele faz logo a criação das pastas necessarias à criação do projecto,certo?
Por exemplo,sem um IDE e com a cricação de um projeto web tinhamos que criar as pastas WEB-INF,src,etc… Mas com o plugin maven instalado no nosso IDE,ele trata disso tudo. Estarei certo??
Depois ainda me diz que o maven trata da build do projecto,ou seja, numa ide com o maven instalado,é o maven que faz a compilação,o executavel,etc…?
O Maven faz bastante coisas. Deixa eu citar algumas das mais atrativas:
Gerenciamento de Dependências: O maven centraliza as suas dependências de uma forma que vc não precise ficar sempre procurando na internet, etc para tê-las em seu aplicativo. Basta declarar no arquivo pom.xml do Maven quais as libs vc vai precisar (e em qual o repositório delas) para que ele sempre baixe e gerencie. Isso facilita na hora de trabalhar em equipe, por exemplo, onde vc teria que ficar copiando o projeto ernorme para o colega. Com o Maven vc passa apenas o projeto com o pom.xml e lá no outro PC ele baixa as mesmas dependências.
Controle de build: Por exemplo, se vc quiser que o build seja feito se e somente se todos os casos de testes de sua aplicação derem certo. Isto é configurável no maven. Outro caso seria realizar a minificação e ofuscação do seu código, o maven tem plugins para isso, de forma que vc não precise fazer manual, ele faz na hora da build. Além disso ele permite que vc controle toda a fase de build, caso queira executar algo diferente antes ou após determinada fase.
Arquétipos: É comum projetos parecidos terem dependências parecidas, por exemplo, projetos Web com JSF + Hibernate + etc. Para não ficar sempre criando um novo projeto do zero, configurando tudo e tals, o Maven possui o conceito de Arquétipos, que sao espécie de “esqueletos prontos” onde já vem tudo configurado para vc. Isso traz um ganho enorme de tempo na inicialização/configuração de um novo projeto.
Plugins: Para o Maven existem também diversos plugins, onde vc pode utilizar determinado recurso através dele. Por exemplo, o JSLint que verifica a sintaxe de seus javascripts.
Bem, existem outros atrativos, mas acredito que estes te sirvam de exemplo.
O Maven faz bastante coisas. Deixa eu citar algumas das mais atrativas:
Gerenciamento de Dependências: O maven centraliza as suas dependências de uma forma que vc não precise ficar sempre procurando na internet, etc para tê-las em seu aplicativo. Basta declarar no arquivo pom.xml do Maven quais as libs vc vai precisar (e em qual o repositório delas) para que ele sempre baixe e gerencie. Isso facilita na hora de trabalhar em equipe, por exemplo, onde vc teria que ficar copiando o projeto ernorme para o colega. Com o Maven vc passa apenas o projeto com o pom.xml e lá no outro PC ele baixa as mesmas dependências.
[/quote]
O que você aqui quis dizer foi que em vez de copiar todo o projecto para uma pasta e fazer o import,basta meter no pom.xml que ele baixa ?
Mas para isso tenho que por o meu projecto em rede,certo?
essa aqui eu nao percebi bem…
Em qualquer IDE,ele só compila e faz o build se ele nao tiver erros,nao?
[quote]- Arquétipos: É comum projetos parecidos terem dependências parecidas, por exemplo, projetos Web com JSF + Hibernate + etc. Para não ficar sempre criando um novo projeto do zero, configurando tudo e tals, o Maven possui o conceito de Arquétipos, que sao espécie de “esqueletos prontos” onde já vem tudo configurado para vc. Isso traz um ganho enorme de tempo na inicialização/configuração de um novo projeto.
[/quote]
Por exemplo, eu tenho um projeto em meu PC e quero compartilhar com vc. Neste caso, eu teria que te passar codigo fonte + dependencias (arquivos jar). Dependendo da quantidade de jars, isso ficaria inviável. Agora, se neste projeto eu estiver utilizando Maven, basta te passar somente os fontes + pom.xml, pq na hora de fazer o build, o Maven verifica quais dependencias vc já tem no seu repositório Maven local (ele cria um diretório local chamado .m2 com as dependências que vc já utilizou em seu PC alguma vez) e as utiliza. Se não tiver, ai sim ele baixa de um repositório remoto (normalmente na internet, ai vai precisar de rede).
Isso permite que meu projeto seja sempre pequeno e de certa forma portável, visto que ele vai baixar as dependências somente se for necessário. Outra situação é no caso de ter 5 projetos com as mesmas dependências. Ele as centraliza e controla as versões no repositório local, sem precisar duplicá-las para cada projeto.
Erros de compilação sim, casos de teste não. É bom diferenciar erros de compilação de falhas detectadas nos casos de teste.
Sim. Vamos supor que eu queira um projeto Web pré-configurado com o framework wicket. Eu poderia usar o wicket-archetype-quickstart. Da uma olhada nesse repositório de maven arquetypes para ver os outros:
Não. Eu agora estava falando do assunto do meu primeiro.post ehh.
Quando eu disse que o maven cria às pastas para nós. por exemplo,web inf,meta inf. Em j2ee
[quote=Yayaa]Não. Eu agora estava falando do assunto do meu primeiro.post ehh.
Quando eu disse que o maven cria às pastas para nós. por exemplo,web inf,meta inf. Em j2ee
[/quote]
Ah sim, está certo também. Ele cria sim. Mas acho que isso seria é o mais básico que ele faz…hehe
Daí o nome do tópico ehhe.
Só mais uma pergunta, o eclipse usa como default o ant? Suponho q ele tmb crie essas pastas tal como o maven. Ele se conseguia virar sozinho sem o ant e criar na mesma?
Qual o ide q usa o maven por defeito?
[quote=Yayaa]Daí o nome do tópico ehhe.
Só mais uma pergunta, o eclipse usa como default o ant? Suponho q ele tmb crie essas pastas tal como o maven. Ele se conseguia virar sozinho sem o ant e criar na mesma?
Qual o ide q usa o maven por defeito?[/quote]
Bem, não conheço nenhuma IDE que use o Maven por default. Você tem que especificar que seu projeto será com Maven. E pelo que me lembre tanto NetBeans quanto Eclipse usam o Ant para criar esta estrutura, e não criariam “sozinhos”.
Pois…
O problema é que nós (programadores novatos),estamos habituados a que o nosso IDe faça tudo por nós. Eu nem sabia que havia outras ferramentas necessarias,neste caso ANT e Maven…
Mas agora estou estudando Spring e fala lá que usa o Maven…
De qualquer maneira continua confunso a necessidade de utilização,visto que estava habituado a que o IDE fizesse tudo automatico