Sto cercando di determinare se ho bisogno di ricompilare alcuni jar nella nostra catena di build, se ho per esempio la seguente struttura, jar 1 viene compilato quando il suo 'source cambia e jar 2 viene compilato quando il suo' source cambia o quando jar 1 ha ricompilatoIl bytecode di una classe può cambiare se una classe/interfaccia genitore cambia?
vasetto 1:
public class Foo /* impl*/
vaso 2:
public class Bar extends Foo /*impl*/
Supponendo che il contratto tra le 2 classi non cambia, cioè. viene aggiunto un metodo astratto o un metodo viene aggiunto a un'interfaccia, ecc.
Devo ricompilare il vaso 2? vale a dire. se alcune modifiche vengono apportate a un metodo privato all'interno di Foo, la barra deve essere ricompilata?
Ho provato a testare questo confrontando il bytecode di due classi dopo aver cambiato un gruppo in uno e come previsto non è cambiato. I miei colleghi, tuttavia, insistono sul fatto che hanno incontrato situazioni in cui, nonostante il contratto fosse immutato, hanno dovuto ricompilare tutto per farlo funzionare, ma non riescono a ricordare quale fosse la ragione ... Quindi l'onere della prova è su di me per dimostrare che questo non dovrebbe essere necessario. C'è un caso in cui apportare una modifica a una superclasse richiede la ricompilazione della sottoclasse anche se l'interfaccia tra i due è rimasta la stessa?
Grazie per il link, credo che speravo che finché la sorgente non fosse cambiata, il file di classe non avrebbe mai dovuto cambiare. Oh bene. – Andrew