automação no ambientautomação no ambiente de desenvolvimento com maven e ant

33
Automação no ambiente Automação no ambiente de desenvolvimento com de desenvolvimento com Maven e ANT Maven e ANT Responsável: Thiago Moretto Responsável: Thiago Moretto Co-responsável: João Bosco Monteiro Co-responsável: João Bosco Monteiro Workshop de Nivelamento Interno Workshop de Nivelamento Interno GPEC/Tecsinapse GPEC/Tecsinapse Versão: 1.0 23/Abr/07

Upload: elliando-dias

Post on 29-Jun-2015

1.743 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Automação no ambientAutomação no ambiente de desenvolvimento com Maven e ANT

Automação no ambiente Automação no ambiente de desenvolvimento com de desenvolvimento com

Maven e ANTMaven e ANT

Responsável: Thiago MorettoResponsável: Thiago MorettoCo-responsável: João Bosco MonteiroCo-responsável: João Bosco Monteiro

Workshop de Nivelamento Interno Workshop de Nivelamento Interno GPEC/TecsinapseGPEC/Tecsinapse

Versão: 1.0 23/Abr/07

Page 2: Automação no ambientAutomação no ambiente de desenvolvimento com Maven e ANT

Workshop GPEC/TecsinapseWorkshop GPEC/Tecsinapse

RoteiroRoteiro

IntroduçãoIntrodução ANTANT MavenMaven Vantagens e desvantagensVantagens e desvantagens Modelo de desenvolvimentoModelo de desenvolvimento Visão geralVisão geral Uso da ferramentaUso da ferramenta FuncionamentoFuncionamento Testes unitáriosTestes unitários Outras característicasOutras características ConclusãoConclusão

Page 3: Automação no ambientAutomação no ambiente de desenvolvimento com Maven e ANT

Workshop GPEC/TecsinapseWorkshop GPEC/Tecsinapse

IntroduçãoIntrodução

Ferramentas como o ANT e Maven Ferramentas como o ANT e Maven desempenham papéis fundamentais em desempenham papéis fundamentais em qualquer ambiente de desenvolvimento.qualquer ambiente de desenvolvimento.

AutomaçãoAutomação PadronizaçãoPadronização IntegraçãoIntegração ColaboraçãoColaboração DistribuiçãoDistribuição

Page 4: Automação no ambientAutomação no ambiente de desenvolvimento com Maven e ANT

Workshop GPEC/TecsinapseWorkshop GPEC/Tecsinapse

ANTANT

Ferramenta versátil de construção que Ferramenta versátil de construção que automatiza processo de compilação, automatiza processo de compilação, empacotamento e distribuição de um empacotamento e distribuição de um projeto.projeto.

Page 5: Automação no ambientAutomação no ambiente de desenvolvimento com Maven e ANT

Workshop GPEC/TecsinapseWorkshop GPEC/Tecsinapse

Visão geral do ANTVisão geral do ANT

Page 6: Automação no ambientAutomação no ambiente de desenvolvimento com Maven e ANT

Workshop GPEC/TecsinapseWorkshop GPEC/Tecsinapse

Exemplo de um buildfileExemplo de um buildfile

<project name="MeuProjeto" default="compile" basedir="."> <target name="init">

<property name="src" value="src"/> <property name="dist" value="classes"/>

</target> <target name="clean" depends="init">

<deltree dir="${dist}"/> </target> <target name="prepare" depends=“clean">

<mkdir dir="${dist}"/> </target>

<target name="compile" depends="init, clean, prepare"> <javac srcdir="${src}" destdir="${dist}"/>

</target> </project>

Page 7: Automação no ambientAutomação no ambiente de desenvolvimento com Maven e ANT

Workshop GPEC/TecsinapseWorkshop GPEC/Tecsinapse

O que é Maven?O que é Maven?

ANT != MavenANT != Maven

O Maven oferece uma infra-estrutura de O Maven oferece uma infra-estrutura de administração de projetos, desde a administração de projetos, desde a compilação, a distribuição, a compilação, a distribuição, a documentação até a colaboração.documentação até a colaboração.

Baseado no conceito de POM Baseado no conceito de POM (Project Object Model), arquivo (Project Object Model), arquivo pom.xmlpom.xml

Page 8: Automação no ambientAutomação no ambiente de desenvolvimento com Maven e ANT

Workshop GPEC/TecsinapseWorkshop GPEC/Tecsinapse

Vantagens do MavenVantagens do Maven

Aumento de produtividadeAumento de produtividade Melhor gestão do projetoMelhor gestão do projeto Padronização de estruturaPadronização de estrutura Automatização das dependênciasAutomatização das dependências Baseado em plugins. Fácil extensão das Baseado em plugins. Fácil extensão das funcionalidades funcionalidades Automatiza teste unitários com JUnitAutomatiza teste unitários com JUnit

Page 9: Automação no ambientAutomação no ambiente de desenvolvimento com Maven e ANT

Workshop GPEC/TecsinapseWorkshop GPEC/Tecsinapse

Desvantages do MavenDesvantages do Maven

Menor versatilidade do que o ANT. Mas Menor versatilidade do que o ANT. Mas são ferramentas bem diferentes!são ferramentas bem diferentes! Curva de aprendizado considerávelCurva de aprendizado considerável Maior complexidade na configuração do Maior complexidade na configuração do ambienteambiente

Page 10: Automação no ambientAutomação no ambiente de desenvolvimento com Maven e ANT

Workshop GPEC/TecsinapseWorkshop GPEC/Tecsinapse

Modelo de desenvolvimento do MavenModelo de desenvolvimento do Maven

Um processo de construção fácil e Um processo de construção fácil e uniforme.uniforme. Fornece informações do projeto com Fornece informações do projeto com qualidade.qualidade. Estimula boas práticas no Estimula boas práticas no desenvolvimento.desenvolvimento. Facilita a colaboração e resolve as Facilita a colaboração e resolve as dependências.dependências.

Page 11: Automação no ambientAutomação no ambiente de desenvolvimento com Maven e ANT

Workshop GPEC/TecsinapseWorkshop GPEC/Tecsinapse

Visão geral do MavenVisão geral do Maven

Fonte: Maven 2 e Continuum: Automatizando o seu ambiente de desenvolvimento (Palestra JustJava 2006); Dário Luís Oliveros e José Marcelo Santuci

Page 12: Automação no ambientAutomação no ambiente de desenvolvimento com Maven e ANT

Workshop GPEC/TecsinapseWorkshop GPEC/Tecsinapse

Visão geral do repositório MavenVisão geral do repositório Maven

Fonte: Maven 2 e Continuum: Automatizando o seu ambiente de desenvolvimento (Palestra JustJava 2006); Dário Luís Oliveros e José Marcelo Santuci

Page 13: Automação no ambientAutomação no ambiente de desenvolvimento com Maven e ANT

Workshop GPEC/TecsinapseWorkshop GPEC/Tecsinapse

Grupo e artefatoGrupo e artefato

Grupo e artefato são formas genéricas de Grupo e artefato são formas genéricas de representar e organizar projetos.representar e organizar projetos.

O grupo (O grupo (groupIDgroupID) é uma forma de ) é uma forma de organizar os projetos (por exemplo, os organizar os projetos (por exemplo, os projetos do GPEC).projetos do GPEC).

Um artefato (Um artefato (artifactIdartifactId) é um identificador ) é um identificador do projeto, ou parte dele (módulo).do projeto, ou parte dele (módulo).

Page 14: Automação no ambientAutomação no ambiente de desenvolvimento com Maven e ANT

Workshop GPEC/TecsinapseWorkshop GPEC/Tecsinapse

InstalaçãoInstalação

Já esta instalado neste laboratório.Já esta instalado neste laboratório.$ mvn -version$ mvn -version

Mas para instalar, baixe do site:Mas para instalar, baixe do site:http://maven.apache.org/http://maven.apache.org/

Descompacte e coloque o caminho do diretório Descompacte e coloque o caminho do diretório bin/ bin/ do Maven no do Maven no $PATH$PATH da máquina. da máquina.

Page 15: Automação no ambientAutomação no ambiente de desenvolvimento com Maven e ANT

Workshop GPEC/TecsinapseWorkshop GPEC/Tecsinapse

Configuração do proxyConfiguração do proxy

Crie o arquivo Crie o arquivo ~/.m2/settings.xml~/.m2/settings.xml

<settings><settings> <proxies><proxies> <proxy><proxy> <active><active>truetrue</active></active> <protocol><protocol>httphttp</protocol></protocol> <host><host>proxy.acad.ucdb.brproxy.acad.ucdb.br</host></host> <port><port>31283128</port></port> <nonProxyHosts>localhost|127.0.0.1</nonProxyHosts><nonProxyHosts>localhost|127.0.0.1</nonProxyHosts> </proxy></proxy> </proxies></proxies></settings></settings>

Page 16: Automação no ambientAutomação no ambiente de desenvolvimento com Maven e ANT

Workshop GPEC/TecsinapseWorkshop GPEC/Tecsinapse

UsoUso

Uso:Uso:$ mvn [ fase ] ...$ mvn [ fase ] ...Uma fase contém vários plugins em ação.Uma fase contém vários plugins em ação.Ou:Ou:$ mvn plugin:função$ mvn plugin:função

Exemplo, criando nova estrutura:Exemplo, criando nova estrutura:$ mvn archetype:create \ $ mvn archetype:create \

-DgroupId=br.ucdb.gpec \ -DgroupId=br.ucdb.gpec \ -DartifactId=teste1-DartifactId=teste1

Page 17: Automação no ambientAutomação no ambiente de desenvolvimento com Maven e ANT

Workshop GPEC/TecsinapseWorkshop GPEC/Tecsinapse

Estrutura padrão de diretóriosEstrutura padrão de diretórios

////pom.xml pom.xml Arquivo de definição do projeto Arquivo de definição do projeto/src//src//src/main/java/.../src/main/java/.../src/main/resources/.../src/main/resources/.../src/test/java/.../src/test/java/...

......

/target/ (Destino de todas as saídas...)/target/ (Destino de todas as saídas...)

Page 18: Automação no ambientAutomação no ambiente de desenvolvimento com Maven e ANT

Workshop GPEC/TecsinapseWorkshop GPEC/Tecsinapse

Arquivo POM mínimoArquivo POM mínimo

<project><project> <modelVersion>4.0.0</modelVersion><modelVersion>4.0.0</modelVersion> <groupId><groupId>br.ucdb.gpecbr.ucdb.gpec</groupId></groupId> <artifactId><artifactId>teste1teste1</artifactId></artifactId> <packaging><packaging>jarjar</packaging></packaging> <version><version>1.01.0</version></version> <name>teste1</name><name>teste1</name> ... ... ......</project></project>

Page 19: Automação no ambientAutomação no ambiente de desenvolvimento com Maven e ANT

Workshop GPEC/TecsinapseWorkshop GPEC/Tecsinapse

Compilação, empacotamento e montagemCompilação, empacotamento e montagem

Compilando:Compilando:$ mvn compiler:compile$ mvn compiler:compile

Empacotando:Empacotando:$ mvn package$ mvn package

Montando:Montando:$ mvn assembly:assembly$ mvn assembly:assembly Necessário configurar.Necessário configurar.

Page 20: Automação no ambientAutomação no ambiente de desenvolvimento com Maven e ANT

Workshop GPEC/TecsinapseWorkshop GPEC/Tecsinapse

Artefato e repositórioArtefato e repositório

Instala no repositório local:Instala no repositório local:$ mvn install$ mvn install

A partir deste momento, se o repositório for A partir deste momento, se o repositório for compartilhado, o projeto já estará disponível compartilhado, o projeto já estará disponível para todos.para todos.

Publica em algum repositório remoto definido Publica em algum repositório remoto definido no arquivo pom.xml.no arquivo pom.xml.$ mvn deploy$ mvn deploy

Page 21: Automação no ambientAutomação no ambiente de desenvolvimento com Maven e ANT

Workshop GPEC/TecsinapseWorkshop GPEC/Tecsinapse

Publicando em um repositórioPublicando em um repositório

<distributionManagement><distributionManagement> <repository><repository> <id>repo</id><id>repo</id> <name>GPEC/Tecsinapse</name><name>GPEC/Tecsinapse</name> <url><url>scp://repositorio.intranet/repo/scp://repositorio.intranet/repo/</url></url> </repository></repository> </distributionManagement></distributionManagement>

No arquivo ~/.m2/settings.xml é necessário No arquivo ~/.m2/settings.xml é necessário configurar usuario e senha ou chave pública neste configurar usuario e senha ou chave pública neste caso!caso!

Page 22: Automação no ambientAutomação no ambiente de desenvolvimento com Maven e ANT

Workshop GPEC/TecsinapseWorkshop GPEC/Tecsinapse

DependênciasDependências

<dependencies><dependencies> ...... <dependency><dependency> <groupId><groupId>org.hibernateorg.hibernate</groupId></groupId> <artifactId><artifactId>hibernatehibernate</artifactId></artifactId> <version><version>3.2.0.ga3.2.0.ga</version></version> </dependency></dependency> ...... </dependencies></dependencies>

Page 23: Automação no ambientAutomação no ambiente de desenvolvimento com Maven e ANT

Workshop GPEC/TecsinapseWorkshop GPEC/Tecsinapse

DependênciasDependências

As dependências são resolvidas tentando As dependências são resolvidas tentando encontrar o artefado em qualquer um dos encontrar o artefado em qualquer um dos repositórios configurados, caso não seja repositórios configurados, caso não seja possível encontrar tal artefato, o Maven pede possível encontrar tal artefato, o Maven pede que este seja instalado manualmente no que este seja instalado manualmente no repositório repositório locallocal..

$ mvn install:install-file -DgroupId=$ mvn install:install-file -DgroupId=exemploexemplo \ \ -DartifactId=-DartifactId=xyzxyz -Dversion= -Dversion=1.01.0 \ \ -Dpackaging=-Dpackaging=jarjar -Dfile= -Dfile=/tmp/xyz.jar/tmp/xyz.jar

Page 24: Automação no ambientAutomação no ambiente de desenvolvimento com Maven e ANT

Workshop GPEC/TecsinapseWorkshop GPEC/Tecsinapse

DependênciasDependências

Dependências transitivas são incluídas Dependências transitivas são incluídas automaticamente.automaticamente.

Page 25: Automação no ambientAutomação no ambiente de desenvolvimento com Maven e ANT

Workshop GPEC/TecsinapseWorkshop GPEC/Tecsinapse

DependênciasDependências

É possível instalar um artefato manualmente É possível instalar um artefato manualmente em um repositório remoto.em um repositório remoto.

$ mvn deploy:deploy-file $ mvn deploy:deploy-file -Dfile=...-Dfile=...-DrepositoryId=repositorio.intranet-DrepositoryId=repositorio.intranet-Durl=scp://...-Durl=scp://...

Page 26: Automação no ambientAutomação no ambiente de desenvolvimento com Maven e ANT

Workshop GPEC/TecsinapseWorkshop GPEC/Tecsinapse

Geração do site com documentação e relatóriosGeração do site com documentação e relatórios

Gera o site e o publica em um servidor Web.Gera o site e o publica em um servidor Web.$ mvn site$ mvn site$ mvn site:site-deploy$ mvn site:site-deploy

Java Java cross-referencecross-reference, estilo Javadoc porém , estilo Javadoc porém utilizando os arquivos fontes.utilizando os arquivos fontes.$ mvn jxr:jxr$ mvn jxr:jxr

Javadoc:Javadoc:$ mvn javadoc:javadoc$ mvn javadoc:javadoc

Page 27: Automação no ambientAutomação no ambiente de desenvolvimento com Maven e ANT

Workshop GPEC/TecsinapseWorkshop GPEC/Tecsinapse

Parceria Maven e ANTParceria Maven e ANT

Saudades do ANT?Saudades do ANT?$ mvn ant:ant$ mvn ant:ant

Caso houve modificações nas dependências, Caso houve modificações nas dependências, faça:faça:$ mvn ant:clean ant:ant$ mvn ant:clean ant:ant

Page 28: Automação no ambientAutomação no ambiente de desenvolvimento com Maven e ANT

Workshop GPEC/TecsinapseWorkshop GPEC/Tecsinapse

Integração com o EclipseIntegração com o Eclipse

Habilita o projeto e cria o classpath no Eclipse, Habilita o projeto e cria o classpath no Eclipse, agora é só importá-lo na ferramenta.agora é só importá-lo na ferramenta.$$ mvn eclipse:eclipsemvn eclipse:eclipse$ mvn $ mvn -Declipse.workspace=...-Declipse.workspace=... eclipse:add-maven-repo eclipse:add-maven-repo

Se houver mudanças nas dependências, feche o Se houver mudanças nas dependências, feche o projeto dentro do Eclipse e execute:projeto dentro do Eclipse e execute:$ mvn eclipse:clean$ mvn eclipse:clean$$ mvn eclipse:eclipse mvn eclipse:eclipse $ mvn $ mvn -Declipse.workspace=...-Declipse.workspace=... eclipse:add-maven-repo eclipse:add-maven-repo

Page 29: Automação no ambientAutomação no ambiente de desenvolvimento com Maven e ANT

Workshop GPEC/TecsinapseWorkshop GPEC/Tecsinapse

Configuração do EclipseConfiguração do Eclipse

Em Em Preferences > Java > Build Path > Preferences > Java > Build Path > Classpath Variables Classpath Variables crie a variável M2_REPO crie a variável M2_REPO com o caminho de seu repositório. Neste caso com o caminho de seu repositório. Neste caso digite digite ~/.m2/repository/~/.m2/repository/

A partir deste momento o seu A partir deste momento o seu build pathbuild path no no Eclipse deve estar correto.Eclipse deve estar correto.

Page 30: Automação no ambientAutomação no ambiente de desenvolvimento com Maven e ANT

Workshop GPEC/TecsinapseWorkshop GPEC/Tecsinapse

Configuração do EclipseConfiguração do Eclipse

Para executar o Maven dentro do Eclipse vá em Para executar o Maven dentro do Eclipse vá em Run > External Tool > External Tools...Run > External Tool > External Tools...

Crie um novo Crie um novo ProgramProgram. Em . Em LocationLocation, localize o , localize o binário do Maven. Em binário do Maven. Em Working DirectoryWorking Directory coloque: coloque: ${project_loc}${project_loc}

Em Em ArgumentsArguments, os argumentos para o Maven. , os argumentos para o Maven. Exemplo: Exemplo: packagepackage

Page 31: Automação no ambientAutomação no ambiente de desenvolvimento com Maven e ANT

Workshop GPEC/TecsinapseWorkshop GPEC/Tecsinapse

Testes unitáriosTestes unitários

O Maven já tem suporte ao Junit.O Maven já tem suporte ao Junit. Por padrão, um projeto só pode ser Por padrão, um projeto só pode ser publicado em um repositório caso passe em publicado em um repositório caso passe em todos os seus testes unitários.todos os seus testes unitários. Na pasta Na pasta src/test/java src/test/java é onde ficam os seus é onde ficam os seus testes unitários, deve respeitar um padrão de testes unitários, deve respeitar um padrão de nome para serem executados nome para serem executados automaticamente.automaticamente.

Page 32: Automação no ambientAutomação no ambiente de desenvolvimento com Maven e ANT

Workshop GPEC/TecsinapseWorkshop GPEC/Tecsinapse

Outras característicasOutras características

Integração com outras IDE's (Netbeans, Integração com outras IDE's (Netbeans, IDEA...)IDEA...) Integração com SCM (Subversion, CVS, ...)Integração com SCM (Subversion, CVS, ...) Agrega o ANT.Agrega o ANT. Vários plugins podem ser encontrados pela Vários plugins podem ser encontrados pela Internet.Internet. Suporte à herança e agregação de projetos.Suporte à herança e agregação de projetos. Entre outras...Entre outras...

Page 33: Automação no ambientAutomação no ambiente de desenvolvimento com Maven e ANT

Workshop GPEC/TecsinapseWorkshop GPEC/Tecsinapse

Referências bibliográficasReferências bibliográficas

ANT:ANT:http://ant.apache.org/http://ant.apache.org/

Better Build with Maven 2:Better Build with Maven 2:http://www.mergere.com/m2book_download.jsphttp://www.mergere.com/m2book_download.jsp

Site do Maven:Site do Maven:http://maven.apache.org/http://maven.apache.org/

Automatizando seus projetos com o Maven 2Automatizando seus projetos com o Maven 2http://pbjug.org/jugs/documentos/maven_2http://pbjug.org/jugs/documentos/maven_2