Para que serve o Maven? – java xml maven

Pergunta:


Muitas vezes encontro projetos grandes que possuem o arquivo pom.xml, mas eu nunca entendi a utilidade do mesmo, apenas descobri que é alguma coisa relacionada com o maven. Enfim:

  • Para que serve o Maven?
  • Para que serve o arquivo pom.xml?
Autor da pergunta Nicolas Bontempo

Comunidade

O Maven é uma ferramenta desenvolvida pela Apache, ela serve para gerenciar as dependências e automatizar seus builds.

Já o pom.xml é o arquivo de configuração do Maven.

Gerenciando as dependências

É muito comum encontrar projetos que fazem o uso de outras bibliotecas ou frameworks, para usá-los é necessário acessá-los através da dependências. As dependências em Java são arquivos comprimidos e armazenados com a extensão .jar. Alguns dessas dependências possuem uma ou mais subdependências e algumas delas possuem uma ou mais subsubdependências, e por aí vai. Ao invés de quando você precisar de uma dependência você ir em busca dela no Google, baixá-la, adicionar no seu projeto e descobrir que ela precisa de X novas subdependências e ficar num ciclo gigante à caça de dependências, você pode automatizar esse processo chato e cansativo, e focar no desenvolvimento que é o que realmente dá valor ao seu projeto.

O Maven automatiza isso para você!

Existe um repositório que é o considerado central do Maven que pode ser acessado através desse link: https://search.maven.org . Além dele existem muitos outros repositório espalhados por aí, e uma boa forma de encontrá-los é através do site http://mvnrepository.com/ que indexa outros repositórios e disponibiliza uma forma mais amigável de buscar as dependências que você necessita.

Ao pesquisar por uma dependência para ser acessada através do Maven você obterá um trecho XML que serve para configurar o pom.xml do seu projeto e indicar que você estará fazendo uso dessa dependência em seu projeto. Ao adicionar esse trecho, o Maven faz o download dela e armazena em um repositório local no seu computador, se você possuir mais de um projeto fazendo uso da mesma dependência você só terá um único arquivo no seu computador, no seu repositório local organizado pelo Maven.

Outra grande vantagem da dependência estar em um repositório local, e não na pasta do seu projeto, é que ao usar ferramentas de versionamento como por exemplo o GIT você não precisará adicionar os seus .jars nele, já que a responsabilidade de gerenciar as dependências não é mais sua, mas sim do Maven.

Um exemplo de trecho XML que configura o Maven para usar uma dependência:

<dependency>
    <groupId>joda-time</groupId>
    <artifactId>joda-time</artifactId>
    <version>2.3</version>
</dependency>

Automatizando os builds

Você pode automatizar tarefas do seu projeto que podem ser geração de arquivos .jars executáveis fazendo uso apropriado das dependências ou até mesmo o deploy de aplicações web.

Por exemplo: Geração de build no projeto Maven e Criando JAR com dependências em Maven

Fonte

Related Posts:

Qual a diferença entre AppCompatActivity e Activity? – android android-activity
Pergunta: Qual a diferença da AppCompatActivity para Activity ? A partir de qual versão a AppCompatActivity foi adicionada ao Android? Autor da pergunta Luhhh A diferença reside ...
Como abreviar palavras em PHP? – php string
Pergunta: Possuo informações comuns como nome de pessoas e endereços, e preciso que elas contenham no máximo 30 caracteres sem cortar palavras. Exemplo: 'Avenida Natalino João Brescansin' ...
Qual é a finalidade de um parêntese vazio numa declaração Lambda? – c# expressões-lambda característica-linguagem
Pergunta: Criei um exemplo de uma declaração Lambda sem argumentos, entretanto, estou com duvidas referente a omissão do parêntese vazio () na declaração. Veja o exemplo: class ...
Boas práticas para URI em API RESTful – api rest restful
Pergunta: Estou com dúvida em relação às URIs de alguns recursos da api que estou desenvolvendo. Tenho os recursos projetos e atividades com relação 1-N, ...
Dúvidas sobre a integração do MySQL com Java – java mysql netbeans
Pergunta: Estou criando um sistema no NetBeans, utilizando a linguagem Java e o banco de dados MySQL. Escrevi o seguinte código para realizar a conexão ...
Qual é a finalidade da pasta Model do framework Inphinit? – php inphinit
Pergunta: No Inphinit micro-framework existe a pasta Model que fica dentro da pasta application, e nela é onde ficam as classes, mas eu estou muito ...
Uso do ‘@’ em variáveis – javascript typescript coffeescript
Pergunta: Vejo em algumas linguagens que compilam para javascript, como TypeScript e CoffeeScript, o uso do @ em variáveis, como também, casos em que o ...
Qual tamanho máximo um arquivo JSON pode ter? – json arquivo
Pergunta: Vou dar um exemplo para conseguir explicar minha duvida: Preciso recuperar informação de imagens vindas de uma API, esse banco de imagens me retorna JSON's ...
O que é Teste de Regressão? – terminologia engenharia-de-software testes
Pergunta: Na matéria de Teste de Software o professor abordou um termo chamado Teste de Regressão, isto dentro da disciplina de teste de software. Sendo ...
O que é um construtor da linguagem? – php característica-linguagem
Pergunta: Em PHP, já li e ouvi várias vezes a respeito dos Construtores da Linguagem. Os casos que sempre ouvi falar deles foi em casos ...
Função intrínseca para converter numérico para string – cobol
Pergunta: Estou a tentar saber se existe alguma função intrínseca do COBOL para converter um data numérico para string sem precisar usar a cláusula REDEFINES: ( ...
Porque usar implements? – java android
Pergunta: Qual a diferença entre usar btn.setOnClickListener(new OnClickListener() { e public class MainActivity extends Activity implements OnClickListener{ Estive fazendo um curso de Android e meu professor falou que ...
O que é XHTML e quando deve ser usado? – html xml xhtml
Pergunta: O que eu sei é que o XHTML precisa ser XML válido. Isso implica, por exemplo, que todas as tags precisam ser fechadas. Por ...
Uma placa aceleradora de vídeo pode melhorar o desempenho não-gráfico? [fechada] – desempenho
Pergunta: Para desenvolver em Ruby on Rails, eu utilizo aqui uma máquina virtual do VirtualBox com Ubuntu Server 14.04 sem interface gráfica instalada. Recentemente descobri uma ...
Concat() VS Union() – c# .net
Pergunta: Qual a diferença entre Concat() e Union() ? Quando usar Concat() e quando usar Union() ? Somente pode ser usado em list ? ...

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *