Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Prof. AndersonV. de Araújo
 É uma ferramenta de construção,
gerenciamento e compreensão de aplicações
 Também do grupo apache
 Revolucionou o gere...
 Dependency System
 Multi-module builds
 Consistent project structure
 Consistent build model
 Plugin oriented
 Proj...
1. Compilar o código-fonte
2. Copiar os recursos
3. Compilar e executar os testes
4. Empacotar o projeto
5. Distribuir (de...
 Diferentemente do ant, não tem tasks e targets
 Já existem tarefas pré-definidas, chamadas goals, que
são agrupadas por...
 A grande diferença entre o build.xml do Ant e o pom.xml do
Maven é o paradigma.
 No Ant usamos esse XML praticamente co...
 Baixar a última versão em
 http://maven.apache.org
 Adicionar a variável de sistema:
M2_HOME, com valor:
C:Program Fil...
 Vá no eclipse, help, install new software
 All available sites
 Selecione as opções:
 Maven IntegrationWTP
 Maven In...
 É o Project Object Model
 Representado pelo arquivo pom.xml
 Ele descreve o projeto / aplicação:
 Nome eVersão
 Tipo...
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>org.fatec.maven</groupId>
<artifactId>myshop</artifactId>
<version>1...
 Ao desenvolver um projeto, precisamos de bibliotecas
externas e o maven para gerenciá-las!
 Ele vai baixar, a partir do...
 compile: Uma dependência com escopo compile
está disponível em todas as fases. É o valor
padrão
 provided: Quando a bib...
<project>
...
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>3...
 Local:
 É uma pasta em sua máquina (.m2 em %USER_HOME% )
 É criado quando qualquer comando maven for executado pela
pr...
 Uma phase é composta por uma série de
goals pré definidos
 Ao executar uma fase, todas as fases
anteriores a ela são ch...
 Representa uma tarefa específica que contribui
para a construção e gestão de um projeto
 Pode estar vinculado a zero ou...
 É uma sequência de fases (phases) bem
definidas que definem a ordem em que os
goals devem ser executados
 Aqui uma fase...
 validate: valida se o projeto está correto e todas as informações
necessárias estão disponíveis
 compile:compila o códi...
 O maven possui muitos plugins e goals
diferentes já prontos
 http://maven.apache.org/plugins/
 Fornece um conjunto de ...
 clean: Limpa o diretório target e o apaga depois
do build
 compiler: Compilar os códigos Java
 surefile: Executar test...
 É um conjunto de valores de configuração que
podem ser usadas para definir ou substituir os
valores padrão de uma constr...
 Tipos:
 Project: Definido no POM do projeto
 User: Definido no settings do Maven
(%USER_HOME%/.m2/settings.xml)
 Glob...
 É um plugin do Maven que cria um protótipo
(template) de projeto do Maven
 Usado na linha de comando:
 mvn archetype:c...
 archetype:generate
 cria um projeto Maven a partir de um modelo,
guiando o usuário através de um wizard que fará
as con...
Introdução ao maven
Upcoming SlideShare
Loading in …5
×

Introdução ao maven

562 views

Published on

Slides introdutórios sobre uma das ferramentas mais interessantes no desenvolvimento de aplicações em Java: o Maven!

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Introdução ao maven

  1. 1. Prof. AndersonV. de Araújo
  2. 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. 3.  Dependency System  Multi-module builds  Consistent project structure  Consistent build model  Plugin oriented  Project generated sites
  4. 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. 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. 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. 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. 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. 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. 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. 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. 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)
  13. 13. <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>
  14. 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. 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. 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. 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. 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. 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. 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. 21.  É 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
  22. 22.  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
  23. 23.  É 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
  24. 24.  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

×