SlideShare uma empresa Scribd logo
1 de 25
Baixar para ler offline
Prof. AndersonV. de Araújo
 É uma ferramenta de construção,
gerenciamento e compreensão de aplicações
 Também do grupo apache
 Revolucionou o gerenciamento de
dependências em Java
 Não precisamos mais adicionar as bibliotecas
no controle de versão!
 Introduziu o conceito do repositório central
Maven
 Dependency System
 Multi-module builds
 Consistent project structure
 Consistent build model
 Plugin oriented
 Project generated sites
1. Compilar o código-fonte
2. Copiar os recursos
3. Compilar e executar os testes
4. Empacotar o projeto
5. Distribuir (deploy) o projeto
6. Limpar tudo
 Diferentemente do ant, não tem tasks e targets
 Já existem tarefas pré-definidas, chamadas goals, que
são agrupadas por plugins
 Por exemplo, o plugin compiler possui goals:
 compile: compila o código fonte
 testCompile: compila os unit tests
 Pode invocar goal por goal, ou então usar os phases
 Uma phase é composta por uma série de goals pré definidos
 Por exemplo, a fase de package (empacotar) é composta por
compilar, testar e gerar o jar
 Não precisamos escrever nada disso
 Basta declararmos o que o projeto necessita, que o
maven se encarrega do resto
 A grande diferença entre o build.xml do Ant e o pom.xml do
Maven é o paradigma.
 No Ant usamos esse XML praticamente como uma linguagem de
programação, onde você da comandos em relação ao build do
projeto.
 No Maven usamos o XML para definir a estrutura do projeto, e a
partir dessas declarações o Maven possui targets bem definidos
que usam essas informações para saber como realizar aquela
tarefa.
 Exemplo: para compilar com oAnt criamos um target que chama o
javac, mas para compilar com o Maven usamos um target já
existente (não o criamos), e ele vai usar a informação que define
onde está o código fonte e para onde ele deve ser compilado
(sendo que muitas dessas informações possuem convenções e
defaults, e nem precisam ser configuradas)
 Baixar a última versão em
 http://maven.apache.org
 Adicionar a variável de sistema:
M2_HOME, com valor:
C:Program Filesapache-maven-3.1.0
 Adicionar %M2_HOME%/bin ao path do
windows como M2
 Testar rodando mvn --version na linha
de comando
 Vá no eclipse, help, install new software
 All available sites
 Selecione as opções:
 Maven IntegrationWTP
 Maven Integration for Eclipse
 Caso não encontre, adicione o site:
http://download.eclipse.org/technology/m2e/releases
 É o Project Object Model
 Representado pelo arquivo pom.xml
 Ele descreve o projeto / aplicação:
 Nome eVersão
 Tipo do Artifact (jar, war, …)
 Endereço dos códigos-fontes
 Dependências
 Plugins
 Perfis (configurações de build específicas)
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>org.fatec.maven</groupId>
<artifactId>myshop</artifactId>
<version>1.0</version>
</project>
 modelVersion:Versão do POM
 groupId: pacote da “empresa”
 artifactId: nome do artefato (war, jar, ...)
 version:Versão do artefato
 Ao desenvolver um projeto, precisamos de bibliotecas
externas e o maven para gerenciá-las!
 Ele vai baixar, a partir do repositório central de artefatos:
 o POM de cada biblioteca externa configurada
 o jar de cada biblioteca e de suas dependências,
recursivamente (gerenciamento de bibliotecas transitivo)
 Milhares de artefatos estão cadastrados no repositório
central do maven
 http://www.mvnrepository.com/
 Os jars baixados são armazenados na pasta repository
dentro de M2_HOME
 Se mais de um projeto depende do mesmo jar, ele não é
baixado de novo
 compile: Uma dependência com escopo compile
está disponível em todas as fases. É o valor
padrão
 provided: Quando a biblioteca deve ser usada
para compilar aplicação mas não é distribuída.
Usada quando o servidor de aplicações deverá
prover o JAR
 runtime: Biblioteca não é necessária para a
compilação e sim para a execução (ex. JDBC
drivers)
 test: Somente usadas para compilar e executar
testes (ex. JUnit)
<project>
...
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>3.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.2.0.Final</version>
</dependency>
</dependencies>
</project>
 Local:
 É uma pasta em sua máquina (.m2 em %USER_HOME% )
 É criado quando qualquer comando maven for executado pela
primeira vez
 Central:
 Fornecido pela comunidade Maven
 Contém um grande número de bibliotecas comumente
utilizadas
 Quando Maven não encontra qualquer dependência no
repositório local, ele começa a procurar no repositório central
 Necessita da internet e não precisa ser configurado
 Remoto
 Repositórios que podem ser adicionados ao POM quando as
bibliotecas não se encontram no repositório central
 Uma phase é composta por uma série de
goals pré definidos
 Ao executar uma fase, todas as fases
anteriores a ela são chamadas
 Fazem parte do ciclo de build do Maven
 Para executar:
 mvn [phase-name]
 Representa uma tarefa específica que contribui
para a construção e gestão de um projeto
 Pode estar vinculado a zero ou mais fases
 Um goal não vinculado a qualquer fase pode ser
executado fora do ciclo de vida por invocação
direta
 A ordem de execução depende da ordem na qual
o(s) goal(s) e a(s) fase(s) são invocadas
 Por exemplo, considere o comando:
 mvn clean dependency:copy-dependencies
package
 Os argumentos clean e package são fases de construção,
enquanto dependency:copy-dependencies é um goal
 É uma sequência de fases (phases) bem
definidas que definem a ordem em que os
goals devem ser executados
 Aqui uma fase representa um estágio do ciclo
de vida
 validate: valida se o projeto está correto e todas as informações
necessárias estão disponíveis
 compile:compila o código fonte do projeto
 test: executa os testes unitários do código compilado, usando
uma ferramenta de testes unitários, como o junit
 package: empacota o código compilado de acordo com formato
escolhido (JAR,WAR, ...)
 integration-test: processa e faz o deploy do pacote em um
ambiente onde os testes de integração podem ser executados
 verify: executa checagens para verificar se o pacote é válido e
atende aos critérios de qualidade
 install: instala o pacote no repositório local, para ser usado como
dependência de outros projetos locais
 deploy: feito em ambiente de integração ou de release, copia o
pacote final para um repositório remoto para ser compartilhado
entre desenvolvedores e projetos
 O maven possui muitos plugins e goals
diferentes já prontos
 http://maven.apache.org/plugins/
 Fornece um conjunto de goals que podem ser
executados:
 mvn [plugin-name]:[goal-name]
 É possível adicionar outros plugins não
existentes no POM
 clean: Limpa o diretório target e o apaga depois
do build
 compiler: Compilar os códigos Java
 surefile: Executar testes JUnit e criar relatórios
de testes
 jar: Construir JAR
 war: ConstruirWAR
 javadoc: Gerar Javadoc
 antrun: Executar um conjunto de tasks do ant de
qualquer fase mencionada no build
 É um conjunto de valores de configuração que
podem ser usadas para definir ou substituir os
valores padrão de uma construção do Maven
 Por exemplo, o caminho do servidor de banco de
dados no desenvolvimento, teste e ambientes de
produção
 Serve para personalizar a construção para
diferentes ambientes
 Como produção, desenvolvimento, tests, stage, ...
 São especificados no POM usando os elementos
activeProfile e profile
 São acionados de diferentes maneiras
 Tipos:
 Project: Definido no POM do projeto
 User: Definido no settings do Maven
(%USER_HOME%/.m2/settings.xml)
 Global: Definido no settings global do Maven
(%M2_HOME%/conf/settings.xml)
 Ativação:
 Explicitamente usando o console
 Através de configurações do Maven
 Com base em variáveis de ambiente (variáveis usuário /
sistema)
 Configurações de SO (por exemplo, famíliaWindows)
 Presente / faltando arquivos
 É um plugin do Maven que cria um protótipo
(template) de projeto do Maven
 Usado na linha de comando:
 mvn archetype:create
 Só definir o groupID, artifactID, version e o
package referentes ao seu projeto
 Depois disso você terá uma estrutura de projeto
pronta para ser usada
 Exemplo:
 maven-archetype-webapp: Gera um projeto
inicial para web
 archetype:generate
 cria um projeto Maven a partir de um modelo,
guiando o usuário através de um wizard que fará
as configurações necessárias
 archetype:create-from-project
 cria um archetype a partir de um projeto existente.
 archetype:crawl
 busca no repositório por archetypes e atualiza o
catálogo

Mais conteúdo relacionado

Mais procurados (20)

Plugin Maven no Eclipse
Plugin Maven no EclipsePlugin Maven no Eclipse
Plugin Maven no Eclipse
 
Maven e Nexus. O que são essas ferramentas?
Maven e Nexus. O que são essas ferramentas?Maven e Nexus. O que são essas ferramentas?
Maven e Nexus. O que são essas ferramentas?
 
Testes em aplicações JEE: Montando sua infra de testes automatizados
Testes em aplicações JEE: Montando sua infra de testes automatizadosTestes em aplicações JEE: Montando sua infra de testes automatizados
Testes em aplicações JEE: Montando sua infra de testes automatizados
 
Introdução ao Asp.NET MVC
Introdução ao Asp.NET MVCIntrodução ao Asp.NET MVC
Introdução ao Asp.NET MVC
 
Maven - Aula 05
Maven - Aula 05Maven - Aula 05
Maven - Aula 05
 
Maven - Aula 03
Maven - Aula 03Maven - Aula 03
Maven - Aula 03
 
Maven - Aula 01
Maven - Aula 01Maven - Aula 01
Maven - Aula 01
 
Maven - Aula 04
Maven  - Aula 04Maven  - Aula 04
Maven - Aula 04
 
Maven - Aula 02
Maven - Aula 02Maven - Aula 02
Maven - Aula 02
 
Introdução ao Maven
Introdução ao MavenIntrodução ao Maven
Introdução ao Maven
 
Introdução ao docker
Introdução ao dockerIntrodução ao docker
Introdução ao docker
 
Docker
DockerDocker
Docker
 
Testes Funcionais com Selenium
Testes Funcionais com Selenium Testes Funcionais com Selenium
Testes Funcionais com Selenium
 
Maven 2
Maven 2Maven 2
Maven 2
 
Minicurso Play Framework - Tão fácil que nem parece Java
Minicurso Play Framework - Tão fácil que nem parece JavaMinicurso Play Framework - Tão fácil que nem parece Java
Minicurso Play Framework - Tão fácil que nem parece Java
 
Maven
MavenMaven
Maven
 
Precisamos falar sobre Gradle
Precisamos falar sobre GradlePrecisamos falar sobre Gradle
Precisamos falar sobre Gradle
 
Eclipse user guide
Eclipse user guideEclipse user guide
Eclipse user guide
 
Build Automation Evolved
Build Automation EvolvedBuild Automation Evolved
Build Automation Evolved
 
Maven - Aula 06
Maven  - Aula 06Maven  - Aula 06
Maven - Aula 06
 

Semelhante a Maven: Gerenciador de Dependências e Builds

Suporte a Open Source no Oracle WebLogic 12c - Integração com Maven & Hudson
Suporte a Open Source no Oracle WebLogic 12c - Integração com Maven & HudsonSuporte a Open Source no Oracle WebLogic 12c - Integração com Maven & Hudson
Suporte a Open Source no Oracle WebLogic 12c - Integração com Maven & HudsonRicardo Ferreira
 
Tutorial de instalação do Maven
Tutorial de instalação do MavenTutorial de instalação do Maven
Tutorial de instalação do MavenAllan Alves
 
Maven 3, Sonar e Hudson
Maven 3, Sonar e HudsonMaven 3, Sonar e Hudson
Maven 3, Sonar e HudsonRodrigo Branas
 
001 cesep - turma java
001   cesep - turma java001   cesep - turma java
001 cesep - turma javaJunior Souza
 
Projetos Java com Maven
Projetos Java com MavenProjetos Java com Maven
Projetos Java com MavenEdgar Dantas
 
Maven: Introdução
Maven: IntroduçãoMaven: Introdução
Maven: IntroduçãoJugVale
 
Gerenciamento de projetos com o Apache Ant
Gerenciamento de projetos com o Apache AntGerenciamento de projetos com o Apache Ant
Gerenciamento de projetos com o Apache AntDenis L Presciliano
 
Gerenciamento de projetos com o Apache Ant
Gerenciamento de projetos com o Apache AntGerenciamento de projetos com o Apache Ant
Gerenciamento de projetos com o Apache AntDenis L Presciliano
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorAllyson Barros
 

Semelhante a Maven: Gerenciador de Dependências e Builds (20)

Apache maven
Apache mavenApache maven
Apache maven
 
Suporte a Open Source no Oracle WebLogic 12c - Integração com Maven & Hudson
Suporte a Open Source no Oracle WebLogic 12c - Integração com Maven & HudsonSuporte a Open Source no Oracle WebLogic 12c - Integração com Maven & Hudson
Suporte a Open Source no Oracle WebLogic 12c - Integração com Maven & Hudson
 
Tutorial de instalação do Maven
Tutorial de instalação do MavenTutorial de instalação do Maven
Tutorial de instalação do Maven
 
Java Seminar
Java SeminarJava Seminar
Java Seminar
 
Maven 3, Sonar e Hudson
Maven 3, Sonar e HudsonMaven 3, Sonar e Hudson
Maven 3, Sonar e Hudson
 
001 cesep - turma java
001   cesep - turma java001   cesep - turma java
001 cesep - turma java
 
Projetos Java com Maven
Projetos Java com MavenProjetos Java com Maven
Projetos Java com Maven
 
Java 01
Java 01Java 01
Java 01
 
Maven: Introdução
Maven: IntroduçãoMaven: Introdução
Maven: Introdução
 
Introducao logica2
Introducao logica2Introducao logica2
Introducao logica2
 
Apache Ant
Apache AntApache Ant
Apache Ant
 
01 introducao ao java
01   introducao ao java01   introducao ao java
01 introducao ao java
 
Framework web 01 - Aula UTFPR 2018
Framework web 01 - Aula UTFPR 2018Framework web 01 - Aula UTFPR 2018
Framework web 01 - Aula UTFPR 2018
 
Maverick v1.0
Maverick v1.0Maverick v1.0
Maverick v1.0
 
Gerenciamento de projetos com o Apache Ant
Gerenciamento de projetos com o Apache AntGerenciamento de projetos com o Apache Ant
Gerenciamento de projetos com o Apache Ant
 
Gerenciamento de projetos com o Apache Ant
Gerenciamento de projetos com o Apache AntGerenciamento de projetos com o Apache Ant
Gerenciamento de projetos com o Apache Ant
 
Java: Introduction
Java: IntroductionJava: Introduction
Java: Introduction
 
Introdução a tecnologia Java
Introdução a tecnologia JavaIntrodução a tecnologia Java
Introdução a tecnologia Java
 
Introdução a tecnologia Java
Introdução a tecnologia JavaIntrodução a tecnologia Java
Introdução a tecnologia Java
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
 

Maven: Gerenciador de Dependências e Builds

  • 2.  É uma ferramenta de construção, gerenciamento e compreensão de aplicações  Também do grupo apache  Revolucionou o gerenciamento de dependências em Java  Não precisamos mais adicionar as bibliotecas no controle de versão!  Introduziu o conceito do repositório central Maven
  • 3.  Dependency System  Multi-module builds  Consistent project structure  Consistent build model  Plugin oriented  Project generated sites
  • 4. 1. Compilar o código-fonte 2. Copiar os recursos 3. Compilar e executar os testes 4. Empacotar o projeto 5. Distribuir (deploy) o projeto 6. Limpar tudo
  • 5.  Diferentemente do ant, não tem tasks e targets  Já existem tarefas pré-definidas, chamadas goals, que são agrupadas por plugins  Por exemplo, o plugin compiler possui goals:  compile: compila o código fonte  testCompile: compila os unit tests  Pode invocar goal por goal, ou então usar os phases  Uma phase é composta por uma série de goals pré definidos  Por exemplo, a fase de package (empacotar) é composta por compilar, testar e gerar o jar  Não precisamos escrever nada disso  Basta declararmos o que o projeto necessita, que o maven se encarrega do resto
  • 6.  A grande diferença entre o build.xml do Ant e o pom.xml do Maven é o paradigma.  No Ant usamos esse XML praticamente como uma linguagem de programação, onde você da comandos em relação ao build do projeto.  No Maven usamos o XML para definir a estrutura do projeto, e a partir dessas declarações o Maven possui targets bem definidos que usam essas informações para saber como realizar aquela tarefa.  Exemplo: para compilar com oAnt criamos um target que chama o javac, mas para compilar com o Maven usamos um target já existente (não o criamos), e ele vai usar a informação que define onde está o código fonte e para onde ele deve ser compilado (sendo que muitas dessas informações possuem convenções e defaults, e nem precisam ser configuradas)
  • 7.  Baixar a última versão em  http://maven.apache.org  Adicionar a variável de sistema: M2_HOME, com valor: C:Program Filesapache-maven-3.1.0  Adicionar %M2_HOME%/bin ao path do windows como M2  Testar rodando mvn --version na linha de comando
  • 8.  Vá no eclipse, help, install new software  All available sites  Selecione as opções:  Maven IntegrationWTP  Maven Integration for Eclipse  Caso não encontre, adicione o site: http://download.eclipse.org/technology/m2e/releases
  • 9.  É o Project Object Model  Representado pelo arquivo pom.xml  Ele descreve o projeto / aplicação:  Nome eVersão  Tipo do Artifact (jar, war, …)  Endereço dos códigos-fontes  Dependências  Plugins  Perfis (configurações de build específicas)
  • 10. <project> <modelVersion>4.0.0</modelVersion> <groupId>org.fatec.maven</groupId> <artifactId>myshop</artifactId> <version>1.0</version> </project>  modelVersion:Versão do POM  groupId: pacote da “empresa”  artifactId: nome do artefato (war, jar, ...)  version:Versão do artefato
  • 11.  Ao desenvolver um projeto, precisamos de bibliotecas externas e o maven para gerenciá-las!  Ele vai baixar, a partir do repositório central de artefatos:  o POM de cada biblioteca externa configurada  o jar de cada biblioteca e de suas dependências, recursivamente (gerenciamento de bibliotecas transitivo)  Milhares de artefatos estão cadastrados no repositório central do maven  http://www.mvnrepository.com/  Os jars baixados são armazenados na pasta repository dentro de M2_HOME  Se mais de um projeto depende do mesmo jar, ele não é baixado de novo
  • 12.  compile: Uma dependência com escopo compile está disponível em todas as fases. É o valor padrão  provided: Quando a biblioteca deve ser usada para compilar aplicação mas não é distribuída. Usada quando o servidor de aplicações deverá prover o JAR  runtime: Biblioteca não é necessária para a compilação e sim para a execução (ex. JDBC drivers)  test: Somente usadas para compilar e executar testes (ex. JUnit)
  • 14.  Local:  É uma pasta em sua máquina (.m2 em %USER_HOME% )  É criado quando qualquer comando maven for executado pela primeira vez  Central:  Fornecido pela comunidade Maven  Contém um grande número de bibliotecas comumente utilizadas  Quando Maven não encontra qualquer dependência no repositório local, ele começa a procurar no repositório central  Necessita da internet e não precisa ser configurado  Remoto  Repositórios que podem ser adicionados ao POM quando as bibliotecas não se encontram no repositório central
  • 15.  Uma phase é composta por uma série de goals pré definidos  Ao executar uma fase, todas as fases anteriores a ela são chamadas  Fazem parte do ciclo de build do Maven  Para executar:  mvn [phase-name]
  • 16.  Representa uma tarefa específica que contribui para a construção e gestão de um projeto  Pode estar vinculado a zero ou mais fases  Um goal não vinculado a qualquer fase pode ser executado fora do ciclo de vida por invocação direta  A ordem de execução depende da ordem na qual o(s) goal(s) e a(s) fase(s) são invocadas  Por exemplo, considere o comando:  mvn clean dependency:copy-dependencies package  Os argumentos clean e package são fases de construção, enquanto dependency:copy-dependencies é um goal
  • 17.  É uma sequência de fases (phases) bem definidas que definem a ordem em que os goals devem ser executados  Aqui uma fase representa um estágio do ciclo de vida
  • 18.  validate: valida se o projeto está correto e todas as informações necessárias estão disponíveis  compile:compila o código fonte do projeto  test: executa os testes unitários do código compilado, usando uma ferramenta de testes unitários, como o junit  package: empacota o código compilado de acordo com formato escolhido (JAR,WAR, ...)  integration-test: processa e faz o deploy do pacote em um ambiente onde os testes de integração podem ser executados  verify: executa checagens para verificar se o pacote é válido e atende aos critérios de qualidade  install: instala o pacote no repositório local, para ser usado como dependência de outros projetos locais  deploy: feito em ambiente de integração ou de release, copia o pacote final para um repositório remoto para ser compartilhado entre desenvolvedores e projetos
  • 19.  O maven possui muitos plugins e goals diferentes já prontos  http://maven.apache.org/plugins/  Fornece um conjunto de goals que podem ser executados:  mvn [plugin-name]:[goal-name]  É possível adicionar outros plugins não existentes no POM
  • 20.  clean: Limpa o diretório target e o apaga depois do build  compiler: Compilar os códigos Java  surefile: Executar testes JUnit e criar relatórios de testes  jar: Construir JAR  war: ConstruirWAR  javadoc: Gerar Javadoc  antrun: Executar um conjunto de tasks do ant de qualquer fase mencionada no build
  • 21.
  • 22.  É um conjunto de valores de configuração que podem ser usadas para definir ou substituir os valores padrão de uma construção do Maven  Por exemplo, o caminho do servidor de banco de dados no desenvolvimento, teste e ambientes de produção  Serve para personalizar a construção para diferentes ambientes  Como produção, desenvolvimento, tests, stage, ...  São especificados no POM usando os elementos activeProfile e profile  São acionados de diferentes maneiras
  • 23.  Tipos:  Project: Definido no POM do projeto  User: Definido no settings do Maven (%USER_HOME%/.m2/settings.xml)  Global: Definido no settings global do Maven (%M2_HOME%/conf/settings.xml)  Ativação:  Explicitamente usando o console  Através de configurações do Maven  Com base em variáveis de ambiente (variáveis usuário / sistema)  Configurações de SO (por exemplo, famíliaWindows)  Presente / faltando arquivos
  • 24.  É um plugin do Maven que cria um protótipo (template) de projeto do Maven  Usado na linha de comando:  mvn archetype:create  Só definir o groupID, artifactID, version e o package referentes ao seu projeto  Depois disso você terá uma estrutura de projeto pronta para ser usada  Exemplo:  maven-archetype-webapp: Gera um projeto inicial para web
  • 25.  archetype:generate  cria um projeto Maven a partir de um modelo, guiando o usuário através de um wizard que fará as configurações necessárias  archetype:create-from-project  cria um archetype a partir de um projeto existente.  archetype:crawl  busca no repositório por archetypes e atualiza o catálogo