omposição do projeto de multimódulos Maven sobre compartilhamento de dependênci

Existem algumas perguntas semelhantes, mas nada como isso. Como você lida com esta situação (cenário típico):

Um projeto de 8 a 11 projetos filhos, com um artefato / projeto pai e um projeto principal que geralmente usa / declara os outros como módulo

O problema é que todos os projetos "estritamente" compartilham apenas as dependências comuns, comotestng, logging, apache commons and stuff. Mas sempre como 3 deles usam 50-60% dos mesmos deps específicos (química apache, jackrabbit, abdera etc.), outros 2-3 deles também usam 50-60% das mesmas, mas diferentes dependências. E o principal usa muitos dos mesmos deps.

Não posso colocar esses deps compartilhados "não estritamente" no projeto pai para que outros os herdem. Portanto, apenas os deps comuns são herdados. E há toneladas de dependências duplicadas. E só posso gerenciar suas versões via<dependencyManagement>.

utra opção é fazer com que o pai pom contenha a maioria das dependências, mas os projetos filhos herdam mesmo aqueles que não precisa

Eu poderia ter mais de um projeto pai, mas não parece certo. A herança do projeto pai também pode ser um pesadelo, porque você não sabe de quais dependências o projeto precisa, se não documentar / comentar a definição de pom pai corretament

Outra maneira é criar pom artefatos que servem apenas como contêineres de dependência - eles declaram grupos específicos de dependências, de modo que os módulos apenas os declarem para obter dependências transitivas. Mas ei, você gostaria de implantar e comprometer algum tipo de

OneDepArtifact declarandojackrabit, abdera, chemistry

AnotherDepArtifact declarandohtmlcleaner, google-api, tika

ThirdDepArtifact declarandospring, httpclient, selenium

É uma bagunça enorme, não tenho certeza se eu uso<dependencyManagement> corretamente, parece ser útil apenas para gerenciar versões de dependênci

Eu estava pensando em adaptar o desenvolvimento do meu aplicativo ao "design de multimódulos maven". Mas se você deseja criar serviços / beans Spring, que apenas usam várias bibliotecas, em um módulo, não os implementa em módulos diferentes, apenas porque eles usam a biblioteca que outro módulo também usa: -)

questionAnswers(3)

yourAnswerToTheQuestion