2 - Maven
-
Upload
rodolfoyalana -
Category
Documents
-
view
4 -
download
0
description
Transcript of 2 - Maven
GERENCIANDO DEPENDÊNCIAS COM O MAVEN
Rodolfo Rocha da Costa
Novembro 2015
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
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;
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.
INTRODUÇÃO - POM
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>
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).
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.
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>
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>
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>
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.
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>
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.
INTRODUÇÃO
Adicionando uma dependência
ESTRUTURA PADRÃO DE UM PROJETO 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
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.
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;
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”.
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
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>