Início > Geral > Como Organizar os Projetos no Liferay

Como Organizar os Projetos no Liferay

Sempre importei projetos para dentro do Eclipse manualmente ou utilizando algum plugin de controle de versão. Havia uma relativa liberdade para montar meu ambiente de trabalho e organizar os projetos. Por causa das restrições impostas pelo Liferay, tive que me adaptar.

Nos cursos oferecidos pela Liferay, em várias ocasiões questionei o instrutor sobre como organizar meus projetos e qual era a melhor forma de fazer o controle de versão. Compartilho o que conversamos, problemas que enfrentei e algumas idéias que tive.

As Restrições Impostas Pelo Liferay Developer Studio

O Liferay Developer Studio, que na verdade é o IDE Eclipse modificado, facilita o gerenciamento do código Liferay. Porém, ele parte de certas premissas quanto a organização dos projetos. Todos os projetos devem estar dentro da pasta SDK para correto funcionamento. Dentre outros motivos, isso se deve à hierarquia do Ant no build.xml. Dessa forma, somos forçados a organizar nosso projeto da seguinte forma:

  • ext
  • hooks
  • layouttl
  • portlets
  • themes

Esse agrupamento faz sentido, pois não espero encontrar um tema dentro de um pacote de extensões ou um portlet dentro de um pacote de layouts, por exemplos. Porém, quando tenho mais de uma comunidade pode haver certa confusão.

Como o uso mais comum do Liferay é na forma de uma instância rodando no container e supondo que minhas comunidades sejam estruturadas como sites independentes, faz sentido que temas, portlets e demais artefatos customizados sejam agrupados por comunidade, pois agora meu foco passa a ser a comunidade e não as partes que a compõe.

Como a estrutura do IDE prevê uma organização do projeto bem definida na pasta SDK, tenho que continuar com foco na parte para organizar o projeto. Dando nomes mais significativos para os projetos e que remetessem à comunidade não ficou tão ruim:

  • themes
  •    comunidade_a-cool-theme
  •    comunidade_b-amazing-theme
  • portlets
  •    comunidade_a-product-list-portlet
  •    comunidade_b-image-handler-portlet


Porém, enquanto escrevia o parágrafo anterior tive outra idéia: e se estruturasse meus projetos por comunidade? Ficaria assim:

  • comunidade_a
  •    themes
  •       cool-theme
  •    portlets
  •       product-list-portlet
  • comunidade_b
  •    themes
  •       amazing-theme
  •    portlets
  •       image-handler-portlet


Ficou bem mais organizado, mas temos que tomar cuidado com as restrições do Studio. Precisamos copiar manualmente esses projetos para dentro da pasta do SDK independente da comunidade. O ideal seria manter no SDK apenas os artefatos necessários para fazer nossa implementação. Faça o possível para não deixar que a organização de seus projetos seja um reflexo obscuro de uma ferramenta.

Controle de Versão

Estou utilizando o SVN para controle de versão. De acordo com o manual do SVN, aquilo que é dependente deve ser versionado junto na estrutura:

  • branches
  • tags
  • trunk

Sendo assim, para o trunk, tenho algo como:

  • trunk
  •    ext
  •    hooks
  •    layouttl
  •    themes
  •       comunidade_a-cool-theme
  •       comunidade_b-amazing-theme
  •    portlets
  •       comunidade_a-product-list-portlet
  •       comunidade_b-image-handler-portlet


Fiz dessa forma pensando em simplicidades. Sendo muito preciosista, poderia argumentar que como portlets causam alteração em um banco comum em tabelas gerenciadas ou não pelo Liferay, faria sentido que todos fossem taggeados juntos.

Há dois problemas nessa abordagem:
1. Artefatos não alterados comporão branches e tags: Se eu precisar alterar apenas um portlet, terei que gerar um branch e depois uma tag contendo todos os outros portlets, hooks, extensions, layouts e temas que não sofreram quaisquer alterações.
2. Tamanho: Pode ser que um artefato seja muito grande. Isso ocorre principalmente com temas. Sempre que eu criar um branch, precisarei fazer uma cópia de todos os artefatos comprometendo em curto/médio prazos o espaço disponível no servidor. O melhor seria se organizássemos nosso repositório orientado a artefato, como citei antes.

Anúncios
  1. Nenhum comentário ainda.
  1. 22/04/2013 às 8:53 PM

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: