[Maven] Criando um Projeto Maven Simples

Anderson Gomes
4 min readOct 7, 2016

--

Neste tutorial, iremos criar um projeto simples e conhecer a estrutura básica de um projeto Maven.

obs: para executar corretamente os comandos deste tutorial, é necessário ter conexão com a Internet, pois o Maven faz o download dos plugins na primeira vez em que precisa deles.

Há pelo menos duas formas de criar um projeto Maven: criando manualmente o diretório dos códigos-fonte e o arquivo pom.xml ou utilizando o plugin Archetype. Como um dos objetivos do Maven é minimizar a necessidade de editar arquivos XML, escolhi a segunda forma para este tutorial. Também por ser a mais utilizada nos livros e tutoriais de Maven. De qualquer forma, caso você queira se familiarizar com o arquivo POM e criá-lo manualmente, mostrarei o arquivo POM gerado pelo plugin Archetype ao final do post.

Antes de começar a criar o projeto, é importante saber que todo projeto Maven possui três campos principais que, juntos, formarão as suas coordenadas. Esse conjunto deve ser único para cada projeto e a partir dele é que um projeto Maven é identificado. São eles:

  • groupId: o ID do grupo que desenvolveu o projeto. Por convenção, o valor desse campo é o domínio da instituição invertido. Exemplos: com.andgomes, br.com.suaempresa.
  • artifactId: o ID do projeto. Exemplos: simple-project, my-java-project.
  • version: a versão atual do projeto. Exemplos: 1.0-SNAPSHOT(significa “versão 1.0 em desenvolvimento”), 2.4.2.

Há dois modos de criar um projeto Maven com o plugin Archetype: o modo interativo e o modo batch(não-interativo). No modo interativo, você terá que preencher as informações do projeto(groupId, artifactId, version e package) à medida em que o Maven for precisando dessas informações. Para isso, entre no diretório em que você deseja criar o projeto e execute o comando

$ mvn archetype:generate -DarchetypeArtifactId=maven-archetype-quickstart

Aguarde o Maven fazer o download do plugin e vá preenchendo as informações do projeto. Nesse comando, archetype é o nome do plugin, generate é o nome do goal e maven-archetype-quickstart é o artifactId do archetype que estamos utilizando para criar o projeto. O Maven possui vários archetypes padrões para cada tipo de projeto e o quickstart é o archetype para os projetos mais simples.

Uma forma mais simples ainda de criar um projeto Maven é criando no modo batch(não-interativo). Para isso, execute o comando

$ mvn archetype:generate -DgroupId=com.andgomes -DartifactId=simple-project -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

e aguarde o Maven concluir a operação. Ao criar um projeto no modo batch, estamos dizendo ao Maven para utilizar os valores padrão nos campos que não informamos. O valor do package, que será a estrutura dos pacotes do seu código-fonte, será o mesmo valor do groupId e o valor do version será 1.0-SNAPSHOT. Quando o interactiveMode é false, temos que informar obrigatoriamente o groupId e o artifactId no comando, caso contrário o Maven irá lançar um erro e o projeto não será criado.

Depois de executar um dos dois comando para criar o projeto(interativo ou batch), o Maven irá criar um diretório com o nome do artifactId(no nosso caso, simple-project) com a seguinte estrutura

src/
| main/
| | java/
| | | com/
| | | | andgomes/
| | | | | App.java
| test/
| | java/
| | | com/
| | | | andgomes/
| | | | | AppTest.java
pom.xml

O diretório main/java/ é o diretório dos códigos-fonte de produção e main/test/ é o diretório dos códigos fonte de teste. Note que a estrutura de diretórios abaixo dos dois corresponde ao valor do package que definimos no momento da criação do projeto(no nosso caso, com.andgomes).

O Maven cria os arquivos App.java e AppTest.java como exemplo de código de produção e código de teste, respectivamente.

obs: como esses dois arquivos são apenas demonstrativos, você talvez queira excluí-los quando começar a criar seus próprios códigos.

O arquivo POM(Project Object Model) é o principal arquivo de um projeto Maven e é nele que todos os parâmetros do projeto serão descritos. A maior parte das alterações do projeto serão feitas através desse arquivo.

Abaixo segue uma breve descrição de cada componente do arquivo POM.

  • <modelVersion>: versão atual do modelo de projeto utilizado pelo Maven.
  • <groupId>: ID do grupo que desenvolve o projeto.
  • <artifactId>: ID do projeto.
  • <packaging>: tipo de empacotamento que o Maven irá utilizar quando o usuário quiser fazer a distribuição do projeto.
  • <version>: versão atual do projeto.
  • <name>: nome do projeto. Diferentemente do artifactId, não faz parte da identificação do projeto. O valor padrão é o valor do artifactId.
  • <url>: URL do site do projeto. O valor padrão é o site do Maven.

A seção <dependencies> serve para definir todas as dependências do projeto. A única dependência que vem listada como padrão é o framework de testes JUnit. Os detalhes dessa seção serão abordados em outro post.

obs: até agora chamei o que é gerado pelo Maven de projeto, mas de agora em diante começarei a usar a palavra artefato. A palavra projeto ficará reservada para um conjunto de artefatos relacionados. O motivo são as futuras postagens sobre projetos multi-módulo.

--

--