Hay algunas preguntas similares, pero nada como esto. Cómo lidiar con esta situación (escenario típico):Composición del proyecto de varios módulos de Maven con respecto a las dependencias que comparten
Un proyecto de 8-11 proyectos infantiles, que tiene un artefacto/proyecto principal y un proyecto principal que usa/declara a los otros como módulos.
El problema es que todos los proyectos "estrictamente" solo comparten las dependencias comunes, como testng, logging, apache commons and stuff
. Pero siempre como 3 de ellos usan 50-60% de los mismos deps específicos (apache-química, jackrabbit, abdera, etc.), otros 2-3 de ellos también usan 50-60% de las mismas pero diferentes dependencias. Y el principal usa muchos de los mismos deps.
No puedo poner esos fragmentos compartidos "no estrictamente" en el proyecto principal para que otros los hereden. Entonces solo los deps comunes son heredados. Y hay toneladas de dependencias duplicadas. Y solo puedo administrar sus versiones a través del <dependencyManagement>
.
Otra opción es tener parent pom que contenga la mayoría de las dependencias, pero los proyectos secundarios heredan incluso aquellos que no necesitan.
Podría tener más de 1 proyecto principal, pero no me parece correcto. También la herencia del proyecto principal podría ser una pesadilla, porque no se sabe qué dependencias necesita el proyecto, si no se documenta/comenta correctamente la definición principal de pom.
Otra forma es crear artefactos pom que sirvan solo como contenedores de dependencia: declaran grupos específicos de dependencias, de modo que los módulos simplemente declaran que esos obtienen dependencias transitivas. Pero bueno, le gustaría implementar y cometer algún tipo de
OneDepArtifact declarar jackrabit, abdera, chemistry
AnotherDepArtifact declarar htmlcleaner, google-api, tika
ThirdDepArtifact declarar spring, httpclient, selenium
Es un gran lío, no estoy seguro de si use <dependencyManagement>
correctamente, parece ser solo útil para administrar versiones de dependencia.
Estaba pensando en adaptar el desarrollo de mi aplicación al "diseño de multimodulos maven". Pero si desea crear servicios/beans de primavera, simplemente use varias bibliotecas, en un módulo, no las implemente en un módulo diferente, simplemente porque usan una biblioteca que también usa otro módulo :-)
Tengo exactamente el mismo problema. Me gusta gestionar proyectos multimodulares debido a las otras ventajas que ofrece, pero este intercambio cruzado de dependencias es una pesadilla, si el proyecto se agranda. – lisak
Tal vez tengamos que adaptar el desarrollo de la aplicación real al diseño del proyecto multimodular y tratar de crear tales componentes para que no exista ninguna reutilización de dependencias ... Pero eso no parece correcto – lisak