2. Maven 2
Ferramenta para automatização do processo
de construção de aplicações.
Mais ou menos equivalente ao Make ou Ant.
Valoriza a padronização do processo de build.
Muito diferente do Maven1 que exigia muita
configuração.
3. Terminologia do Maven (1)
Com o Maven, você executa plugins que
atingem objetivos (goals) em diferentes fases
do ciclo de construção (lifecycle) para criar
artefatos.
Exemplos de artefatos são arquivos .jar e .war.
Esses artefatos tem “coordenadas” (groupId,
artifactId e version).
4. Terminologia do Maven (2)
Os artefatos ficam guardados em repositórios locais
ou remotos.
Quando um artefato é criado, ele é instalado em um
repositório local ou implantado (deployed) em
repositórios remotos.
Os artefatos podem ser insumos para a criação de
outros artefatos através do mecanismo de
dependências.
Novos projetos Maven podem ser criados a partir de
modelos (ou “arquétipos”) com o plugin archetype.
5. Criando um projeto Maven
Execute
mvn archetype:generate
Selecione o 15 (default).
Exemplos de respostas:
Define value for groupId: : com.wim.ita
Define value for artifactId: : teste-maven
Define value for version: 1.0-SNAPSHOT: :
Define value for package: : com.wim.ita.testemaven
Confirme e observe que o projeto foi criado na pasta com o nome
que foi dado para o artifactId (teste-maven nesse exemplo).
Nesse exemplo archetype é o plugin e generate é o goal
Observe os downloads de plugins.
7. Construindo a aplicação
Execute na pasta do projeto
mvn install
“install” é o ciclo (lifecycle) que cria e instala artefatos no repositório local.
Espera-se um “BUILD SUCCESSFUL”
Observe o log de execução com as fases de compilação, compilação do teste, teste
e etc.
Observe a pasta target, contém artefatos transitórios e o arquivo .jar final.
Observe o artefato final instalado em <repositório>/com/wim/ita/teste-maven/1.0-
SNAPSHOT
com/wim/ita = groupId
teste-maven = artifactId
Para executar a aplicação:
java -cp target/teste-maven-1.0-SNAPSHOT.jar com.wim.ita.testemaven.App
9. Projetos Maven no eclipse
Execute
mvn eclipse:eclipse
eclipse = plugin
eclipse = goal
Observe a criação dos arquivos .project e .classpath
No Eclipse:
File → New → Project
Project → General Project
preencha name e location
Observe que as libraries estão preenchidas e apontando
adequadamente para o repositório
10. POM – Project Object Model
Contém informações/configurações específicas
do projeto.
Suporta conceitos de herança.
O POM de um projeto sempre herda a
configuração de um ou POM (quando sub-
projeto) ou do Super POM.
11. Dependências
Mecanismo que permite a descrição dos
artefatos que contém insumos para o projeto.
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
12. Exclusão de dependências
As dependências podem ser excluídas para
resolver conflitos
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1</version>
<exclusions>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>
13. Snapshots
Acrescente -SNAPSHOT à versão do artefato
para indicar que é uma versão em
desenvolvimento
O Maven verifica constantemente se existem
atualizações
17. Ciclos de construção
Geralmente um artefato é construido com a
execução de uma sequencia de metas (goals)
O Maven reconhece 21 ciclos
validate generate-test-sources package
generate-sources process-test-sources pre-integration-test
process-sources generate-test-resources integration-test
generate-resources process-test-resources post-integration-test
process-resources test-compile verify
compile test install
process-classes prepare-package deploy
18. Profiles
Um profile permite um build customizado
Execute
mvn install -Pxpto
<profiles>
<profile>
<id>xpto</id>
<properties>
<app.final.name>
NomeXPTO
</app.final.name>
</properties>
</profile>
</profiles>