Ho scritto un generatore di codice per la mia azienda, che fondamentalmente ha il seguente flusso di lavoro:
entity xml definition
|
v
gets validated and put into java runtime classes by jaxb
|
v
runtime classes are written to .java files with stringtemplate
Ora è possibile avviare un server e usare quei file. Fin qui, tutto bene.
Prima di poter installare il server per i nostri clienti, è necessario che sia convalidato per GAMP 5, operazione che richiede molto lavoro. Ogni volta che c'è una modifica al sistema, dobbiamo provare TUTTO da zero, se non possiamo esserne sicuri, che non è cambiato.
Pertanto, ho bisogno di avere un concetto su come eseguire la versione del codice generato.
Il problema (1) è che il codice generato è né commited to git, né a SVN ; solo le definizioni xml sono inserite in SVN.
Un'altra cosa (2) è che una volta che il compito gradle per generare il codice, che è necessario non appena qualcosa è cambiato nei file xml, (al momento) rigenera TUTTI i file .java , anche se non è stata apportata alcuna modifica al file xml della rispettiva entità.
La terza (3) cosa da avere in mente è che un'entità può essere estesa da un altro file xml. il flusso di lavoro per questo sarebbe simile a
entity xml definition extension xml definition
| |
v v
gets validated and put into java runtime classes by jaxb
\ /
\ /
Merging the runtime classes together
|
v
runtime classes are written to .java files with stringtemplate
Un'idea
doveva generare il file .java e prima di sovrascrivere i vecchi file, leggerli e sovrascriverli solo se differiscono. Il messaggio di output direbbe quindi quali parti del software devono essere riconvalidate
Un altro approccio includerebbe la generazione di hashcode per tutti i file e vedere se questi differiscono dagli hash precedenti.
Quale sarebbe il modo migliore per farlo?