Pesquisar este blog

domingo, 7 de fevereiro de 2016

Tutorial - Maven - Criando projetos com Maven via linha de comando

Motivação

Já mostrei nessa postagem como obter e configurar o Maven em seu ambiente.

Nesse post mostrarei como é simples criar um projeto com o Maven a partir da linha de comando.

Após ler esse post você estará preparado para criar projetos com o Maven.

Criando uma aplicação simples

O Maven é uma ferramenta de linha de comando e possui diversos comandos muito uteis para o desenvolvedor. (Irei criar um post mostrando alguns desses comandos, fique tranquilo).

Para criar um simples projeto Java com o Maven na linha de comando é muito simples.

Instruções:

Passo 1: Para esse exemplo iremos iniciar abrindo o terminal e navegaremos para a pasta do usuário e criaremos uma pasta chamado workspace_exemplo e acessaremos ela.


Passo 2: Execute o comando mvn archetype:generate.
Esse comando vai listar todos os archetypes disponíveis no catalogo do Maven e seus respectivos números.


Por padrão ele deixa pré selecionado o número 705 que é o referente ao maven-archetype-quickstart, um projeto simples de exemplo do Maven.
Escolha a opção que atenda o seu projeto e siga em frente. (Para seguir o tutorial vamos usar a 705 mesmo).


Passo 3: Após selecionar o archetype você vai ter que selecionar a versão do archetype. Vamos assumir a seleção do archetype 705.


Nesse caso por padrão ficará pré selecionado a opção 6, referente a versão 1.1 do archetype (a mais recente), mas você pode escolher outra de acordo com a sua necessidade.

Passo 4: Informe o GroupId.


O GroupId é o identificador do grupo/organização que esta desenvolvendo o projeto.

Passo 5: Informe o ArtifactId.


O ArtifactId é o nome do componente que será o resultado no fim. É o nome do pacote final por assim dizer.

Passo 6: Informe a versão.


Essa é a versão de seu projeto no ato da criação.
Por padrão o Maven vai sugerir a versão 1.0-SNAPSHOT.

Passo 7: Informe o package.


Aqui você definirá o nome padrão para os pacotes de sua aplicação. 
Por padrão o Maven vai sugerir o mesmo conteúdo informado em GroupId.

Passo 8: Confirme a criação do projeto.


Verifique a estrutura do projeto criado após a execução desses procedimentos.


Alias, esse procedimento que realizamos é chamado de Interativo.
Temos uma forma mais simples de executar a mesma ação, porém você precisa ser muito mais criterioso, onde você já deve saber o artifactId, groupId e version do archetype assim como as mesmas informações para o criação de seu projeto pois tudo será informado como parâmetro do comando mvn archetype:generate.

Basta executar o comando abaixo:

mvn archetype:generate 
-DgroupId=com.valhala.tutorial 
-DartifactId=projeto_tutorial 
-Dversion=1.0-SNAPSHOT 
-DarchetypeGroupId=org.apache.maven.archetypes 
-DarchetypeArtifactId=maven-archetype-quickstart 
-DarchetypeVersion=1.1 
-DinteractiveMode=false

Ou até mesmo:

mvn archetype:generate -B
-DgroupId=com.valhala.tutorial 
-DartifactId=projeto_tutorial 
-Dversion=1.0-SNAPSHOT 
-DarchetypeGroupId=org.apache.maven.archetypes 
-DarchetypeArtifactId=maven-archetype-quickstart 
-DarchetypeVersion=1.1 

Ambos comandos funcionam da mesma maneira.
Essa forma de criar projetos é chamada de criação em Batch.

Vamos dar uma olhada na estrutura do projeto criado após o procedimento...


Repare que dentro da pasta projeto_tutorial temos um arquivo xml chamado pom.xml. 

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.valhala.tutorial</groupId>
  <artifactId>projeto_tutorial</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>projeto_tutorial</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

Esse arquivo é muito importante no projeto, sendo o coração do seu projeto.
É nesse arquivo que você vai configurar as dependências de sua aplicação, plugins e outras configurações importantes para o seu projeto.

Temos também a pasta src e dentro dela as pastas main e test.
Os nomes são claros quanto ao objetivo das pastas.
main: Pasta onde ficam os arquivos principais do projeto. Tudo que será compilado para gerar o pacote final de produção fica dentro desta pasta.
test: Pasta onde fica tudo referente a execução de testes da aplicação.

Mas vale dizer que mesmo o projeto tendo sido criado a partir de um archetype Maven o mesmo não esta totalmente no padrão de organização de projetos Maven.

Suponha que você tenha arquivos de propriedades por exemplo... Onde eles devem ficar? Na pasta java?
Bom, no fim colocando na pasta java vai funcionar, mas fica um pouco estranho, já que o nome da pasta é java, logo entende-se que apenas arquivos .java devem ficar nesse diretório.

O Maven adota o padrão de organização de estrutura de pastas abaixo:



Então, vamos criar a pasta resources dentro das pastas main e test para adequarmos o projeto para o padrão Maven.
A pasta resources é utilizada para gravar todos os recursos que não sejam necessariamente código Java, como por exemplo arquivos de propriedades.

E pronto! Já temos um projeto pronto e já sabemos como criar um projeto Maven pela linha de comando.

Conclusão

O Maven é uma ferramenta muito poderosa para gerenciar dependências e automatizar tarefas de build no seu projeto e amplamente utilizado nos mais variados sistemas desenvolvidos em Java.
É muito importante que você conheça pelo menos o básico de seu funcionamento para conseguir desenvolver bem o seu trabalho.

Aqui eu mostrei como criar um projeto simples utilizando o Maven.
Com esses procedimento você já tem conhecimento suficiente para se aprofundar e criar projetos complexos utilizando o Maven e seus archetypes.

No meu próximo post irei mostrar como criar um projetos utilizando o Maven, porém a partir da IDE Eclipse.

Até o próximo post!

Links

Lista de archetypes Maven

Nenhum comentário:

Postar um comentário