Maven 2
walter.mourao@gmail.com
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.
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).
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.
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.
Estrutura padrão de um projeto
Maven
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
Ciclos (Lifecycles) do Maven
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
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
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.
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>
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>
Snapshots
 Acrescente -SNAPSHOT à versão do artefato
para indicar que é uma versão em
desenvolvimento
 O Maven verifica constantemente se existem
atualizações
Repositórios
 Estruturas de pastas contendo artefatos
(plugins, .jar, .war, etc.) .
 Locais (~/.m2/repository) ou remotos (http,
https, ftp, sftp)
 Repositórios públicos (
http://repo2.maven.org/maven2/,
http://repository.jboss.org/maven2)
 Gerenciadores/proxies Nexus, archiva,
artifactory.
Propriedades do projeto
<properties>
<app.final.name>nomeXYZ</app.final.name>
<source.version>1.5</source.version>
<target.version>1.5</target.version>
</properties>
Configuração de build e plugins
<build>
<finalName>${app.final.name}</finalName>
<pluginManagement>
<plugins>
<plugin>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-compiler-plugin
</artifactId>
<configuration>
<source>${source.version}</source>
<target>${target.version}</target>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
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
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>

Maven

  • 1.
  • 2.
    Maven 2  Ferramentapara 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 projetoMaven  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.
  • 6.
    Estrutura padrão deum projeto Maven
  • 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
  • 8.
    Ciclos (Lifecycles) doMaven 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
  • 9.
    Projetos Maven noeclipse  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 – ProjectObject 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 quepermite 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
  • 14.
    Repositórios  Estruturas depastas contendo artefatos (plugins, .jar, .war, etc.) .  Locais (~/.m2/repository) ou remotos (http, https, ftp, sftp)  Repositórios públicos ( http://repo2.maven.org/maven2/, http://repository.jboss.org/maven2)  Gerenciadores/proxies Nexus, archiva, artifactory.
  • 15.
  • 16.
    Configuração de builde plugins <build> <finalName>${app.final.name}</finalName> <pluginManagement> <plugins> <plugin> <groupId> org.apache.maven.plugins </groupId> <artifactId> maven-compiler-plugin </artifactId> <configuration> <source>${source.version}</source> <target>${target.version}</target> </configuration> </plugin> </plugins> </pluginManagement> </build>
  • 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 profilepermite um build customizado  Execute mvn install -Pxpto <profiles> <profile> <id>xpto</id> <properties> <app.final.name> NomeXPTO </app.final.name> </properties> </profile> </profiles>