Assembly Maven: aggiungi una versione diversa dello stesso artefatto

Creo il mio archivio applicazioni con il plug-in di assembly Maven. Tutte le dipendenze presenti nel mio pom sono incluse senza alcun problema.

Ora ho bisogno di includere due o più versioni dello stesso artefatto.

Se nel mio pom ho messo

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

Di origine il resolver dependenvcy rimuove la vecchia versione e solo l’1.1.0 è impacchettato nell’archivio

Provo ad includere il jar usando il file descrittore dell’assembly xml. E non ho trovato alcuna soluzione.

Una ansible soluzione sarà quella di inserire manualmente tutti i necessari model.jar all’interno di una cartella e dire all’assembly di copiarlo nell’archivio. Ma sto cercando una soluzione più configurabile.

Qualche idea ?

Ho trovato una soluzione usando il plugin di maven-dependency per copiare dipendenze di pom risolte e jar aggiuntivi.

  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    

Ora devo solo aggiungere le seguenti righe nel mio assembly xml

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

Maven presume che non abbia senso avere più di una versione di un modulo contemporaneamente. Si presuppone che una versione più recente sostituisca la versione precedente. In caso contrario, non è lo stesso modulo. Ti suggerisco di dare al nuovo modulo un nome diverso e assicurarti che abbia diversi pacchetti per evitare di scegliere un modulo casuale.

In generale Maven ha cercato di incoraggiare una buona progettazione dell’applicazione e ha reso deliberatamente difficile fare cose che ha determinato essere una ctriggers idea.

Un’altra brutta soluzione potrebbe essere quella di utilizzare gli overlay di file WAR, sfruttando il fatto che questo meccanismo non presta attenzione alle versioni dei file JAR dei componenti durante l’applicazione degli overlay.

Sono d’accordo, versioni diverse significa sostituire il vecchio. Se dovessimo consumare due versioni diverse di un webservice per alcuni requisiti aziendali. È una buona idea generare gli stub in diversi pacchetti e mentre si aggiunge a maven è ansible specificarli in groupid . Questo dovrebbe funzionare.