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

Post on 29-Jun-2015

1.743 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

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

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

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.

Workshop GPEC/TecsinapseWorkshop GPEC/Tecsinapse

Visão geral do ANTVisão geral do 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>

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

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

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

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.

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

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

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).

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.

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>

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

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...)

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>

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.

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

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!

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>

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

Workshop GPEC/TecsinapseWorkshop GPEC/Tecsinapse

DependênciasDependências

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

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://...

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

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

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

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.

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

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.

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...

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

top related