Ensamblaje de Maven: agregue una versión diferente del mismo artefacto

Creé el archivo de mi aplicación con el complemento de ensamblaje de maven. Toda la dependencia presente en mi pom se incluye sin ningún problema.

Ahora necesito incluir dos o más versiones del mismo artefacto.

Si en mi pom pongo

 [...]  db.test my-model 1.0.3   db.test my-model 1.1.0   

Del origen, el resolvedor de dependencias elimina la versión anterior y solo el 1.1.0 está empaquetado en el archivo

Intento incluir el jar utilizando el archivo descriptor xml de ensamblaje. Y no encontré ninguna solución.

Una posible solución será colocar manualmente todo el modelo necesario .jar dentro de una carpeta y decirle al ensamblado que lo copie en el archivo. Pero estoy buscando una solución más configurable.

Alguna idea ?

Encontré una solución usando maven-dependency-plugin para copiar dependencias pom resueltas y jar adicional.

  org.apache.maven.plugins maven-dependency-plugin 2.1   copy-dependencies package  copy-dependencies   ${project.build.directory}/lib false false true runtime    copy-model package  copy     my.test.pkg my-model server 1.0.3 jar   my.test.pkg my-model server 1.1.0 jar   ${project.build.directory}/lib    

Ahora solo tengo que agregar las siguientes líneas en mi conjunto xml

   ${project.build.directory}/lib /lib false  *.jar  0600  

Maven supone que no tiene sentido tener más de una versión de un módulo a la vez. Se supone que una versión más nueva reemplaza a la versión anterior. Si no, no es el mismo módulo. Le sugiero que le dé un nombre diferente al módulo más nuevo y se asegure de que tenga diferentes paquetes para evitar chocar con un módulo aleatorio.

En general, Maven trató de alentar el buen diseño de las aplicaciones y dificulta deliberadamente hacer las cosas que consideraba una mala idea.

Otra solución fea podría ser el uso de superposiciones de archivos WAR, explotando el hecho de que este mecanismo no presta atención a las versiones de los archivos JAR componentes al aplicar las superposiciones.

Estoy de acuerdo, diferentes versiones significa reemplazar el anterior. Si tenemos que consumir dos versiones diferentes de un servicio web por algún requisito comercial. Es una buena idea generar los stubs en diferentes paquetes y al agregar a maven, puede especificarlos en groupid . Esto debería funcionar.