2 - maven

23
GERENCIANDO DEPENDÊNCIAS COM O MAVEN Rodolfo Rocha da Costa Novembro 2015

Upload: rodolfoyalana

Post on 02-Feb-2016

4 views

Category:

Documents


0 download

DESCRIPTION

O Maven é um gerenciador de dependências para aplicações java. Com ele é possível obter facilmente as bibliotecas necessárias para o funcionamento do sistema.

TRANSCRIPT

Page 1: 2 - Maven

GERENCIANDO DEPENDÊNCIAS COM O MAVEN

Rodolfo Rocha da Costa

Novembro 2015

Page 2: 2 - Maven

INTRODUÇÃO

O Maven é uma ferramenta de gerenciamento, construção e implantação de projetos muito interessante, que te ajuda no processo de gerenciamento de dependências e no de build, geração de relatórios e de documentação

Page 3: 2 - Maven

INTRODUÇÃO

Característicaso Sistema de dependência;o Construções Multi-Módulo;o Estrutura do projeto consistente;o Modelo de construção consistente;o Orientado a Plugin;

Page 4: 2 - Maven

INTRODUÇÃO

Project Object Model A unidade básica de configuração do Maven é

um arquivo pom.xml, que deve ficar na raiz do seu projeto. Ele fornece todas as configurações para um único projeto.

Projetos maiores poderiam ser divididos em vários módulos, ou subprojetos, cada um com seu próprio POM. Um POM também pode herdar configuração de outros POMs.

Todos os POMs herdam do Super POM por padrão.

Page 5: 2 - Maven

INTRODUÇÃO - POM

Page 6: 2 - Maven

INTRODUÇÃO

O menor arquivo pom.xml válido é o seguinte:<project>  <modelVersion>4.0.0</modelVersion>  <groupId>br.com.caelum</groupId>  <artifactId>teste</artifactId>  <version>1.0</version></project>

Page 7: 2 - Maven

INTRODUÇÃO Artefato (artifact) - Um artefato é geralmente um

arquivo JAR que fica no repositório do Maven, mas pode ser de outro tipo.

Cada artefato é identificado através dos seguintes elementos:

modelVersion, é a identificação da versão do arquivo pom.xml e deve ser sempre 4.0.0. A identificação do projeto consiste em três informações:

groupId: um identificador da empresa/grupo ao qual o projeto pertence. Geralmente o nome do site da empresa/grupo ao contrário. Ex: br.com.ADS.

artifactId: o nome do projeto. Ex: teste. version: a versão atual do projeto. Ex: 1.0-SNAPSHOT.

Sempre será executado o ciclo de vida do maven. Type: jar, war, ear, pom (projeto de configuração).

Page 8: 2 - Maven

INTRODUÇÃO

Repositório local É um diretório em seu PC onde os artefatos são

armazenados após baixados de um repositório remoto na internet ou na intranet.

Repositório remoto Consiste numa aplicação que disponibiliza artefatos do

Maven. Pode se um repositório público na Internet, onde criadores de bibliotecas e frameworks disponibilizam seus artefatos, ou pode ser um repositório privado da empresa, disponível na intranet.

Quando adicionamos esses repositórios remotos em nossa instalação do Maven, ele é capaz de localizar e baixar automaticamente as dependências através da identificação do artefato.

Page 9: 2 - Maven

INTRODUÇÃO Herança de projeto

Arquivos POM podem herdar configuração através do nó <parent>, podendo herdar:• artifactId, groupId, version.• Dependências.• Configuração de plugins.

<?xml version="1.0" encoding="UTF-8"?><project> <parent> <artifactId>maven-training-parent</artifactId> <groupId>org.lds.training</groupId> <version>1.0</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>maven-training</artifactId> <packaging>jar</packaging></project>

Page 10: 2 - Maven

INTRODUÇÃO

Projetos multi-módulo Maven está na primeira classe de suporte

multimódulo. Cada projeto Maven cria um artefato primário.

Um POM pai é usado para grupo de módulos.<project>...<packaging>pom</packaging><modules> <module>maven-training</module> <module>maven-training-web</module></modules></project>

Page 11: 2 - Maven

INTRODUÇÃO Empacotamento

Construção de tipo identificado usando o elementopackaging. Informa ao Maven como contruir o projeto.

Exemplo de tipos de “packaging”: pom, jar, war; Padrão é jar;

<?xml version="1.0" encoding="UTF-8"?><project> <modelVersion>4.0.0</modelVersion> <artifactId>maven-training</artifactId> <groupId>org.lds.training</groupId> <version>1.0</version> <packaging>jar</packaging></project>

Page 12: 2 - Maven

INTRODUÇÃO

Dependências

As dependências de um projeto para o Maven sãoos arquivos ou bibliotecas (arquivos jar) que eleprecisa em alguma das fases do seu ciclo de vida.

Existem as fases de preparação, compilação,teste, empacotamento e instalação e asdependências estão intimamente ligadas a esteciclo de vida.

Page 13: 2 - Maven

INTRODUÇÃO Dependências

Cada dependência fica dentro de um nó <dependency/>, que tem os seguintes nós componentes:

groupId: o “groupId” do POM da dependência; artifactId: o “artifactId” do POM da dependência; version: a “version” do POM da dependência; scope: o escopo do ciclo de vida do projeto (opcional).

<project> <dependencies> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> </dependencies> </project>

Page 14: 2 - Maven

INTRODUÇÃO Dependências <scope> pode assumir os seguintes valores: compile: a dependência fica disponível durante todas as

fases do projeto, desde a compilação até a instalação do sistema (escopo padrão).

provided: a dependência está disponível para compilação, mas em tempo de execução ela deve ser disponibilizada pelo ambiente no qual a aplicação está executando. Por exemplo, a API de Servlets.runtime: é o contrário de provided, a dependência não está disponível em tempo de compilação, mas é enviada junto com o projeto em tempo de execução. Por exemplo, drivers JDBC (bibliotecas que são carregadas dinamicamente).

test: a dependência está disponível apenas à execução dos testes do sistema.

system: indica que a dependência não estará disponível no repositório do Maven e sua localização deve ser fornecida dentro do POM.

Page 15: 2 - Maven

INTRODUÇÃO

Adicionando uma dependência

Page 16: 2 - Maven

ESTRUTURA PADRÃO DE UM PROJETO MAVEN

Page 17: 2 - Maven

ESTRUTURA PADRÃO DE UM PROJETO MAVEN src/main/java: aqui fica o código-fonte do sistema ou biblioteca. src/main/resources: arquivos auxiliares do sistema, como

properties, XMLs e configurações. src/main/webapp: se for uma aplicação web, os arquivos JSP,

HTML, JavaScript CSS vão aqui, incuindo o web.xml. src/test/java: as classes com seus testes unitários ficam aqui e

são executadas automaticamente com JUnit e TestNG. Outros frameworks podem exigir configuração adicional.

src/test/resources: arquivos auxiliares usados nos testes. Você pode ter properties e configurações alternativas, por exemplo.

pom.xml: é o arquivo que concentra as informações do seu projeto.

target: é o diretório onde fica tudo que é gerado, isto é, onde vão parar os arquivos compilados pelo processo de build, JARs, WARs, JavaDoc, etc.

Site: diretório principal da documentação Pom.xml: arquivo de configuração do projeto

Page 18: 2 - Maven

ESTRUTURA PADRÃO DE UM PROJETO MAVEN

Um ponto importante desta estrutura é que elasepara os arquivos da aplicação dos arquivos dostestes da aplicação.

Assim quando se gera um “JAR” ou “WAR” dosistema, os seus testes não vão junto, porque nãohá necessidade de empacotar testes unitáriosjunto com o sistema.

Page 19: 2 - Maven

CICLO DE VIDA Validate – verifica se a sua configuração está

correta; Compile – compila o código fonte do projeto ; Test – executa os testes unitários do projeto; Package – empacota o projeto conforme foi definido

na sua descrição; Integration-test – executa os testes de integração; Verify – verifica a qualidade da aplicação e do código

(normalmente com relatórios de análise de código, resultados de testes de integração e carga);

Install – instala o artefato gerado no repositório local do Maven;

Deploy – envia o artefato gerado para um servidor remoto para que ela seja implantada;

Page 20: 2 - Maven

CICLO DE VIDA

Quando você manda o Maven executar qualqueruma destas fases, ele automaticamente executatodas as fases anteriores.

Se executamos a fase “package” eleautomaticamente executa as fases “validate”,“compile” e “test” antes de finalmente executar“package”.

Page 21: 2 - Maven

PROCESSO DE INSTALAÇÃO

Download: http://maven.apache.org Descompactar a ferramenta em um lugar fixo Criar a variável de ambiente M2_HOME

apontando para o diretório de instalação Atualizar a variável de ambiente PATH

apontando para o diretório M2_HOME/bin (;% M2_HOME% \ bin)

Propriedades do Sistema → Variáveis de ambiente.  Testando: mvn –version limpando: mvn clean

Repositorio local: .m2

Page 22: 2 - Maven

REPOSITORIO MAVEN

http://mvnrepository.com

Page 23: 2 - Maven

REPOSITORIO MAVEN <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>br.com.starcode</groupId>

<artifactId>teste-maven-01</artifactId>

<version>0.0.1-SNAPSHOT</version>

<name>Teste Maven 01</name>

<description>Um teste de projeto simples com o maven</description>

<dependencies>

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>4.12</version>

</dependency>

</dependencies>

</project>