Pergunta

Eu tenho um aplicativo grande (~50 módulos) usando uma estrutura semelhante à seguinte:

  • Aplicativo
    • Módulos de comunicação
      • Módulo de comunicação de cores
      • Módulo de comunicação SSN
      • etc.módulo de comunicação
    • Módulo roteador
    • Módulos de serviço
      • Módulo de serviço de votação
        • Submódulo de interface web para votação
        • Submódulo coletor de votos para votação
        • etc.para votar
      • Módulo de serviço de questionário
      • etc.módulo

Gostaria de importar o aplicativo para Maven e Subversion.Depois de alguma pesquisa, descobri que existem duas abordagens práticas para isso.

Um deles está usando uma estrutura em árvore igual à anterior.A desvantagem dessa estrutura é que você precisa de muitos ajustes/hacks para que os relatórios de vários módulos funcionem bem com o Maven.Outra desvantagem é que no Subversion a abordagem padrão trunk/tags/branches adiciona ainda mais complexidade ao repositório.

A outra abordagem usa uma estrutura plana, onde há apenas um projeto pai e todos os módulos, submódulos e partes dos submódulos são filhos diretos do projeto pai.Essa abordagem funciona bem para relatórios e é mais fácil no Subversion, porém sinto que perco um pouco da estrutura dessa forma.

Qual caminho você escolheria no longo prazo e por quê?

Foi útil?

Solução

Temos um aplicativo maior (mais de 160 pacotes OSGi em que cada pacote é um módulo Maven) e a lição que aprendemos, e continuamos a aprender, é que plano é melhor.O problema com a codificação da semântica em sua hierarquia é que você perde flexibilidade.Um módulo que é 100% “comunicação” hoje pode ser parcialmente “serviço” amanhã e então você precisará mover coisas em seu repositório e isso quebrará todos os tipos de scripts, documentação, referências, etc.

Portanto, eu recomendaria uma estrutura plana e codificaria a semântica em outro local (digamos, por exemplo, um espaço de trabalho ou documentação IDE).

Eu respondi uma pergunta sobre o layout do controle de versão com alguns detalhes com exemplos em outra pergunta, pode ser relevante para sua situação.

Outras dicas

Acho que é melhor nivelar sua estrutura de diretórios.Talvez você queira criar uma convenção de nomenclatura para os diretórios, de forma que eles sejam bem classificados ao visualizar todos os projetos, mas, em última análise, não acho que toda essa hierarquia extra seja necessária.

Supondo que você esteja usando o Eclipse como seu IDE, todos os projetos terminarão em uma lista simples assim que você os importar, de qualquer maneira, para que você realmente não ganhe nada com os subdiretórios adicionais.Isso, além do fato de a configuração ser muito mais simples, sem toda a hierarquia extra, deixa a escolha bem clara em minha mente.

Você também pode considerar combinar alguns dos módulos.Não sei nada sobre seu aplicativo ou domínio, mas parece que muitos desses módulos de nível folha podem ser mais adequados apenas como pacotes ou conjuntos de pacotes dentro de outro módulo de nível superior.Sou totalmente a favor de manter os potes coesos, mas às vezes isso pode ser levado longe demais.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top