La mia azienda ha diverse versioni del suo software principale in uso dai nostri clienti in qualsiasi momento. Il mio compito è quello di scrivere software Java su misura per i clienti in base alla versione del software di base che sono in esecuzione.
Ho creato una libreria Java comune che esegue molte delle attività che richiedo regolarmente in un progetto normale. Questo è un progetto Maven che distribuisco al nostro Artifactory locale e quando possibile abbino altri progetti Maven.
Attualmente questa libreria include la versione 1.3 del nostro software di base, ad esempio:
<dependency>
<groupId>com.foo</groupId>
<artifactId>core-software</artifactId>
<version>1.3</version>
</dependency>
Di conseguenza, questa è l'unica versione di cui sono assolutamente sicuro sia compatibile grazie al successo dei test unitari. Come posso automatizzare meglio i test con altre versioni del software principale per garantire la compatibilità?
Una possibilità è creare una serie di progetti Maven che incorporino la mia libreria e sostituiscano la versione del software di base:
<!-- Override core version -->
<dependency>
<groupId>com.foo</groupId>
<artifactId>core-software</artifactId>
<version>1.2</version>
</dependency>
<!-- Incorporate shared library: -->
<dependency>
<groupId>com.foo</groupId>
<artifactId>common-lib</artifactId>
<version>1.0</version>
</dependency>
Potrei quindi eseguire i test unitari dal mio progetto principale per assicurarmi che tutti passino (ho bisogno di capirlo). Il vantaggio di questo approccio è che posso incorporare questi progetti Maven aggiuntivi nel mio server di integrazione continua e ricevere avvisi ogni volta che un check-in rompe la compatibilità con un'altra versione del software di base.
Qualcuno può suggerire un'alternativa migliore?