[overlay in vaadin]

Salve a tutti, da poco tempo sviluppo applicazioni web in java con Vaadin 8, (uso Eclipse e Maven).
Sto sviluppando un software di tipo gestionale che è in realtà composto da numerose “applicazioni”.
Trattandosi di un software piuttosto complesso e voluminoso, la scelta è stata quella di prevedere “un singolo progetto” per ogni “sotto-applicazione”. (ad esempio esiste il progetto in cui si gestisce l’anagrafica clienti, quello in cui si gestisce l’anagrafica dei prodotti, quello in cui si emettono le fatture, ecc… Ognuno di questi è un .WAR nel server di produzione).
A parte le classi di servizio quelle per la gestione dell’interfaccia o per la persistenza dei dati nel database, ogni singolo progetto include classi per mostrare la lista dei record, per l’editor di un record, ecc…
Tutto funziona alla perfezione. La mia esigenza è però quella di gestire quelli che in altri linguaggi si chiamano overlay.
Mi spiego: Ad esempio l’’applicazione “gestione anagrafica clienti” include la classe “elencoClienti” e la classe “editCliente” visto che da quell’applicazione e possibile visualizzare la lista clienti, editarne uno o crearne uno.
L’applicazione “emissione fattura”, oltre ad includere le classi specifiche per l’emissione del documento, include anche le stesse classi “elencoClienti” e “editCliente” di cui sopra poiché emettendo una fattura è possibile creare o modificare un cliente.
L’approccio per il quale più progetti includono le stesse classi in realtà funziona alla perfezione. I lati negativo però sono:

  • Se faccio una modifica alla classe “editCliente” per aggiungere una funzionalità sono costretto a compilare e a pubblicare un aggiornamento dell’app “gestione anagrafica clienti”, “emissione fattura” e di tutte le app che includono le classi “elencoClienti” e “editCliente” altrimenti la nuova funzionalità non comparirà dappertutto.
  • I progetti che includono parecchie classi, una volta compilati ed esportati in un .WAR potrebbero diventare piuttosto pesanti. (pensate all’esempio di prima, per cui il progetto “emissione fattura” importerebbe tutte le classi che gestiscono i clienti, i prodotti, l’archivio pagamenti, vettori, causali, voci iva, ecc…ecc…ecc…ecc…)
    L’idea sarebbe di gestire ogni singola applicazione, (quindi ogni singolo WAR), come un modulo a se stante da poter “richiamare” da altre applicazioni.
    Così facendo basterebbe compilare e pubblicare ad esempio la sola applicazione/modulo “anagrafica prodotti” quando si implementa qualcosa per fare in modo che tutte le altre applicazioni che lo usano siano automaticamente aggiornate senza dover essere compilate/ripubblicate. Qualche idea di come farlo? Grazie infinite per ogni suggerimento che vorrete darmi.