Organização de Módulos

30 views
Skip to first unread message

Renato Resende Ribeiro de Oliveira

unread,
Nov 9, 2015, 6:55:38 AM11/9/15
to caelum-...@googlegroups.com
Pessoal,
Tenho hoje 3 projetos em VRaptor 4 e estou incomodado com a repetição de código que tenho nos 3.
EX: Toda a papagaiada de controle de acesso, sessão de usuário, interceptor, factories de hibernate/jpa, DAO's abstratos, utilitários etc.
Quando começo o projeto novo, são umas 25 classes que copio de um projeto para outro, alterando linhas pontuais de uma para outra.

O maior problema é que as vezes evoluo uma dessas classes, e com vários processos de evolução, rapidamente tenho 3 classes diferentes (uma em cada projeto) que deveriam ser iguais.

Resumindo, quero estruturar módulos dentro da minha organização para que esses componentes sejam compartilhados e reusáveis pela equipe de desenvolvimento.

Daí vem minha pergunta, gostaria de saber se alguém tem algo similar estruturado e como trabalha com isso. Pensei a principio em 2 opções:

- Módulos Maven estilo biblioteca. O maior drawback dessa abordagem é que ou eu teria que configurar um repositório maven privado para publicar as bibliotecas ou cada dev teria que instalar localmente todas as libs que o projeto depende.

- Módulos realmente independentes, com deploy independente, onde os recursos seriam disponibilizados como "serviços". Essa é complicada, pois tem alguns códigos que não encaixam como serviços.

- (Essa não sei se é possível). Diferentes projetos onde configuraria as dependências como propriedade do próprio projeto do eclipse.

Eu gostaria de compartilhar um POM parent com esses 3 projetos e qualquer outro módulo também. Qual seria a melhor abordagem? O maior problema é tudo código privado, então não posso enviar pra central do maven.

Obrigado, 
Att.

--
Renato Resende Ribeiro de Oliveira
CTO - ProGolden Soluções Tecnológicas
MSc - Computer Science - Universidade Federal de Lavras

Skype: renatorro.comp.ufla.br
ICQ: 669012672
Phone: +55 (31) 9823-9631

Conheça o PrêmioIdeia - Inovação Colaborativa na sua empresa!

pbnf

unread,
Nov 9, 2015, 11:57:10 AM11/9/15
to caelum-vraptor
Monta um repositorio maven interno pra vc, não precisa usar um servidor remoto, use o Nexus é muito facil de instalar e usar.

Valério

unread,
Nov 9, 2015, 12:57:32 PM11/9/15
to caelum-vraptor
Estou com essa mesma idéia aqui, temos já uma estrutura de repositório maven corporativo com o artifactory e estou pra criar algo como um controller-essentials, já com o vraptor e algumas classes reutilizáveis (e por esse cara como dependencia dos meus projetos web).

Att,

Valério

--
Você recebeu essa mensagem porque está inscrito no grupo "caelum-vraptor" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para caelum-vrapto...@googlegroups.com.
Para postar nesse grupo, envie um e-mail para caelum-...@googlegroups.com.
Acesse esse grupo em http://groups.google.com/group/caelum-vraptor.
Para mais opções, acesse https://groups.google.com/d/optout.

Clairton Rodrigo Heinzen

unread,
Nov 9, 2015, 1:34:30 PM11/9/15
to caelum-vraptor
Boa tarde.
Já montei repositórios de artefatos no github e bitbucket, com o plugin http://synergian.github.io/wagon-git/.

Está funcionando bem pois não tenho muitas dezenas de projetos.

Para exemplificar tenho o projeto https://github.com/clairton/repository, que a cada push faz o build em https://drone.io/github.com/clairton/repository, e publica em https://github.com/clairton/mvn-repo.

Qualquer duvida estou a disposição.

Renato Resende Ribeiro de Oliveira

unread,
Nov 9, 2015, 3:22:10 PM11/9/15
to caelum-...@googlegroups.com
Então,
Minha ideia era mesmo montar o artifactory.
Mas tem como instala-lo em um server e colocar algum tipo de autenticação?:
No meu caso não daria pra ser só intranet, pois desenvolvo muito de casa também.

Em último caso meto tudo que for lib no sonatype mesmo e deixo os projetos fechados só.
Criar um plugin tipo vraptor-boilerplate que tenha essas paradas.

Sei que tem alguns plugins com o escopo menor, tipo vraptor-jpa e outros. Mas não conheço os plugins muito bem, só o vraptor-tasks.
Quero aproveitar e perguntar à vocês também, mandem aqui plugins que vocês usam que são úteis para fins de configuração, autenticação, boilerplates, etc.

Valeu, att.


--
Você recebeu essa mensagem porque está inscrito no grupo "caelum-vraptor" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para caelum-vrapto...@googlegroups.com.
Para postar nesse grupo, envie um e-mail para caelum-...@googlegroups.com.
Acesse esse grupo em http://groups.google.com/group/caelum-vraptor.
Para mais opções, acesse https://groups.google.com/d/optout.

Valério

unread,
Nov 9, 2015, 3:59:52 PM11/9/15
to caelum-vraptor
O Artifactory tem autenticação própria e um plugin de autenticação via LDAP.

Att,

Valério

Clairton

unread,
Nov 9, 2015, 4:13:29 PM11/9/15
to caelum-...@googlegroups.com
Opa.
Escrevi varias coisas quando comecei a usar o Vraptor a cerca de uma ano. Segue alguns:

Autenticação e autorização

Dao++ generico para JPA

Fazer query atraves da url para o projeto acima
​​
Hypermedia com GSON
​​
Bootstrap VRaptor para Single Page Application, utiliza os anteriores citados
​​



Atenciosamente
Clairton Rodrigo Heinzen

Renato Resende Ribeiro de Oliveira

unread,
Nov 9, 2015, 4:25:20 PM11/9/15
to caelum-...@googlegroups.com
Show, vou dar uma olhadas nas docs do Nexus.

Renato Resende Ribeiro de Oliveira

unread,
Nov 9, 2015, 4:46:03 PM11/9/15
to caelum-...@googlegroups.com
Interessante Clairton.
O que estou querendo modularizar é bem no estilo do que você publicou no vraptor-crud.
Talvez fosse interessante unificar algumas dessas suas libs hein? ehehehe, estou dando uma olhada nelas aqui.

Att.

Clairton

unread,
Nov 9, 2015, 4:58:10 PM11/9/15
to caelum-...@googlegroups.com
Então Renato. Na verdade praticamente todas elas começaram no vraptor-crud.
Depois acabei separando e diminuindo o escopo de cada um para ficar mais fácil testar, :).

O repository por exemplo, pode ser usado em qualquer projeto JPA.

Mas é algo para se pensar, pretendo lançar a versão 1.0 deles pois já estão estáveis em produção a meses. Também seria interessante coloca-los em um repositório de artefatos publico, mas não tenho tido tempo. Ficaria feliz por ajuda.

Renato Resende Ribeiro de Oliveira

unread,
Nov 9, 2015, 5:11:34 PM11/9/15
to caelum-...@googlegroups.com
É Sonatype é meio chatinho de publicar mesmo.

Pela linha que estou vendo do CrudController você quis fazer tipo os Blueprints do Sails.js para Node.
Vejo várias coisas possíveis de adicionar aí, alguns métodos para respostas REST padronizadas, algumas utils.
Amanhã vou olhar com mais calma o código.

Att.

--
Você recebeu essa mensagem porque está inscrito no grupo "caelum-vraptor" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para caelum-vrapto...@googlegroups.com.
Para postar nesse grupo, envie um e-mail para caelum-...@googlegroups.com.
Acesse esse grupo em http://groups.google.com/group/caelum-vraptor.
Para mais opções, acesse https://groups.google.com/d/optout.

Clairton

unread,
Nov 10, 2015, 9:36:29 AM11/10/15
to caelum-...@googlegroups.com
Opa, legal Renato.
É um CRUD que funcionou para mim na maioria do casos, esta divido em vários métodos para facilitar sobrescrever no controller concreto se necessário.
Toda ajuda será bem vinda.

Valério

unread,
Nov 10, 2015, 10:02:00 AM11/10/15
to caelum-vraptor
Vou dar uma olhada nesse seu CRUD :-)

Att,

Valério

pbnf

unread,
Nov 11, 2015, 11:48:20 AM11/11/15
to caelum-vraptor
Renato, acho que esta havendo um confusão nas soluções que vc mostrou pra resolver o seu problema, uma coisa é unificar as partes comuns pra ser usado nas aplicações, outra coisa é como disponibilizar.

A forma mais manual seria:
- Pegar a parte comum e transformar em projeto(s) que vão gerar arquivos JAR
- Nas aplicações finais fazer referencia a esses projetos

E a forma mais automatizada seria usar o Maven com um repositorio local(Nexus ou Repository) subindo esses JARs da parte comum como artefatos e as aplicações finais fazem referencia a esses artefatos

PS: Tanto o Nexus como o Repository tem todos os mecanismos de segurança necessarios e acesso remoto só depende da sua infra.

Renato Resende Ribeiro de Oliveira

unread,
Nov 11, 2015, 2:23:24 PM11/11/15
to caelum-...@googlegroups.com
Sim, é porque eu ainda estava em dúvida se seria melhor só criar microservices ou criar libs.
Mas acho que no caso as libs ficariam melhor.

--
Você recebeu essa mensagem porque está inscrito no grupo "caelum-vraptor" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para caelum-vrapto...@googlegroups.com.
Para postar nesse grupo, envie um e-mail para caelum-...@googlegroups.com.
Acesse esse grupo em http://groups.google.com/group/caelum-vraptor.
Para mais opções, acesse https://groups.google.com/d/optout.
Reply all
Reply to author
Forward
0 new messages