terça-feira, 7 de setembro de 2010

Utilizando o maven para gerar uma estrutura de projeto baseado no Myfaces.

Este passo a passo foi criado para possibilitar a utilização do maven para automatizar o processo de criação de um projeto através de archetypes para o myfaces. Como tentei utilizar um tutorial da web que nunca dava certo, acabei me baseando no seguinte link: http://wiki.apache.org/myfaces/MyFaces_Archetypes_for_Maven.

Obs.: O objetivo deste documento é unicamente definir um passo a passo para facilitar a instalação do Maven e utilização dos archetypes do Myfaces, ou seja, não é a intenção definir o que é o Maven, archetypes e nem o projeto Myfaces. Para entender melhor estes projetos, procure o site oficial dos mesmos.

Para realizar as configurações e iniciar os projetos utilizando o maven
os itens abaixo são necessários:

1 - Instalação do Maven
2 - Baixar para o repositório local do maven, os archetypes do myfaces.
3 - Iniciar a criação de um projeto.

Os passos descritos acima foram realizados utilizando-se um PC com sistema operacional Linux - Ubuntu.

Iniciando o passo a passo:

1 - Instalação do Maven.
A versão do Maven utilizada foi a 2.2.1 disponível para download no site: http://maven.apache.org/download.html
Neste caso foi utilizado o mirror apache-maven-2.2.1-bin.tar.bz2.

Descompacte o arquivo em um diretório desejado.
Ex.:
tar -xvjf apache-maven-2.2.1-bin.tar.bz2


Uma vez descompactado, para poder utilizar o maven a partir de qualquer diretório do seu sistema, deve-se adicionar algumas variáveis de ambiente conforme o script abaixo no arquivo de configuração desejado (que no meu caso preferi configurar no arquivo ~/.bashrc):

export M2_HOME="/dados/java/opensource/apache-maven-2.2.1"
export PATH="$PATH:$M2_HOME/bin"


Agora o Maven está pronto para utilização, então pode testar em algum diretório o seguinte comando do maven para verificar a versão:

mvn --version


2 - Baixar para o repositório local do maven, os archetypes do myfaces.
Até o momento em que escrevi este post, não encontrei um repositório online do maven para o projeto myfaces. Portanto conforme a própria documentação que li, foi necessário baixar o projeto utilizando o subversion.

Obs.: No Ubuntu instalei o Subversion através do comando:
# apt-get install subversion


Para baixar o projeto com o svn pode-se utilizar o comando abaixo no diretório de preferência:

adolfo@skynet:/dados/java/opensource$ svn checkout http://svn.apache.org/repos/asf/myfaces/myfaces-build-tools/trunk/maven2-archetypes


Com o comando acima, serão baixados todos os archetypes do Myfaces.
Após baixar os archetypes, é necessário instalar os mesmos no repositório local (residente em ~/.m2) através dos passos abaixo:

adolfo@skynet:/dados/java/opensource$ cd maven2-archetypes/
adolfo@skynet:/dados/java/opensource/maven2-archetypes$ mvn install


O Maven irá baixar as dependências necessárias, vai instalar o que for necessário e irá testar os archetypes.
Se tudo der certo, no final deverá aparecer uma saída parecida com a descrita abaixo:

[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO] ------------------------------------------------------------------------
[INFO] Apache MyFaces Buildtools Maven2 Archetype Parent ..... SUCCESS [2:49.358s]
[INFO] MyFaces Basic Archetype ............................... SUCCESS [1:05.513s]
[INFO] MyFaces 2.0 Basic Archetype ........................... SUCCESS [0.418s]
[INFO] MyFaces 2.0 and OWB Basic Archetype ................... SUCCESS [0.428s]
[INFO] MyFaces Facelets Archetype ............................ SUCCESS [0.441s]
[INFO] MyFaces Portlet Archetype ............................. SUCCESS [0.464s]
[INFO] MyFaces Trinidad Archetype ............................ SUCCESS [0.378s]
[INFO] MyFaces Trinidad 2.0 Archetype ........................ SUCCESS [0.433s]
[INFO] JSF Component Library Archetype ....................... SUCCESS [0.547s]
[INFO] ------------------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3 minutes 58 seconds
[INFO] Finished at: Tue Sep 07 13:49:11 BRT 2010
[INFO] Final Memory: 45M/186M
[INFO] ------------------------------------------------------------------------


3 - Iniciar a criação de um projeto.

Pronto, agora já é possível iniciar a criação de um projeto.
Tentei utilizar o seguinte comando para criação de um projeto de componente customizado do myfaces, porém não tive sucesso:

mvn archetype:create -DarchetypeGroupId=org.apache.myfaces.maven \
-DarchetypeArtifactId=maven-archetype-jsfcomponents \
-DarchetypeVersion=1.0-SNAPSHOT \
-DgroupId=myAppId \
-DartifactId=myJsfComponents


A forma com a qual consegui gerar um projeto Maven com o archetype desejado foi conforme a descrita nos passos abaixo:

adolfo@skynet:~/workspace$ mvn archetype:generate -DarchetypeCatalog=http://myfaces.apache.org


A saída abaixo permite escolher qual archetype utilizar bem como configurar o projeto de forma interativa:

[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'archetype'.
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven Default Project
[INFO] task-segment: [archetype:generate] (aggregator-style)
[INFO] ------------------------------------------------------------------------
[INFO] Preparing archetype:generate
[INFO] No goals needed for project - skipping
[INFO] [archetype:generate {execution: default-cli}]
[INFO] Generating project in Interactive mode
[INFO] No archetype defined. Using maven-archetype-quickstart (org.apache.maven.archetypes:maven-archetype-quickstart:1.0)
Choose archetype:
1: http://myfaces.apache.org -> myfaces-archetype-helloworld (Simple Web application using Apache Myfaces)
2: http://myfaces.apache.org -> myfaces-archetype-helloworld-facelets (Simple Web application using Apache Myfaces and Facelets)
3: http://myfaces.apache.org -> myfaces-archetype-helloworld-portlets (Simple Web application using Apache Myfaces and Portlets)
4: http://myfaces.apache.org -> myfaces-archetype-jsfcomponents (Simple JSF Component using Apache Myfaces)
5: http://myfaces.apache.org -> myfaces-archetype-trinidad (Simple Web application using Apache Myfaces and Trinidad)
Choose a number: : 4
Define value for property 'groupId': : com.wtek
Define value for property 'artifactId': : wtek.custom
Define value for property 'version': 1.0-SNAPSHOT:
Define value for property 'package': com.wtek:
Confirm properties configuration:
groupId: com.wtek
artifactId: wtek.custom
version: 1.0-SNAPSHOT
package: com.wtek
Y: Y
[INFO] ----------------------------------------------------------------------------
[INFO] Using following parameters for creating OldArchetype: myfaces-archetype-jsfcomponents:1.0.1
[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: groupId, Value: com.wtek
[INFO] Parameter: packageName, Value: com.wtek
[INFO] Parameter: package, Value: com.wtek
[INFO] Parameter: artifactId, Value: wtek.custom
[INFO] Parameter: basedir, Value: /home/adolfo/workspace
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] ********************* End of debug info from resources from generated POM ***********************
[INFO] OldArchetype created in dir: /home/adolfo/workspace/wtek.custom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1 minute 47 seconds
[INFO] Finished at: Tue Sep 07 14:33:48 BRT 2010
[INFO] Final Memory: 20M/173M
[INFO] ------------------------------------------------------------------------


Pronto, o projeto Maven utilizando um archetype do myfaces está criado.

Nenhum comentário:

Postar um comentário