Sto costruendo un'architettura orientata ai servizi composta (principalmente) da servizi basati su Java, ognuno dei quali è un progetto Maven (in un singolo repository) con due sottomoduli: common e server. Il modulo common
contiene le interfacce del servizio che i client possono includere nel loro progetto per effettuare chiamate di servizio. Il sottomodulo server
contiene il codice che alimenta effettivamente il servizio.
Ora sto cercando di capire una strategia di versioning appropriata per le interfacce, in modo tale che ogni modifica dell'interfaccia produca un nuovo jar comune, ma le modifiche al server (a patto che non influiscano sul contratto delle interfacce) ) ricevere lo stesso jar comune.
So che è abbastanza semplice da fare manualmente (basta incrementare la versione del server e non toccare quella comune), ma questo progetto verrà costruito e implementato da un server CI e mi piacerebbe venire con una strategia per il controllo automatico della versione di questi. L'unica cosa che sono riuscito a fare finora è avere il server CI md5
delle interfacce di servizio.