Come posso gestire olisticamente un'applicazione multi repository multi modulo

0

Sto scrivendo un'applicazione che ho diviso in più giare, comprese librerie di infrastrutture riutilizzabili, ognuna delle quali ha le proprie versioni (gestita dalla BOM) e repository git. Lo sto facendo per una serie di motivi.

  1. alcuni di questi sarebbero riutilizzabili se decidessi di iniziare a scrivere un'applicazione completamente diversa e potrei decidere di rilasciarli come open source.
  2. trasformandoli in moduli diversi, poiché si stabilizzano Non dovrò ricostruire il codice più e più volte, le API dei moduli si stabilizzeranno
  3. prevenire me stesso da stratagemmi e dipendenze scorretti assicurando che in alcuni casi non ci sia visibilità del tempo di compilazione del percorso di classe.

tuttavia questo mi ha lasciato un sovraccarico di sviluppo. Principalmente questi problemi

  1. Ho qualcosa come una dozzina di repository che li clonano se su una nuova installazione è fastidioso.
  2. Non riesco a visualizzare o reimpostare il codice insieme in intellij mentre apporto le modifiche alle librerie a monte, se necessario. nota: questi non stanno cambiando insieme tutto il tempo, solo bisogno di migliorare a monte prima a volte, ma sarebbe utile farlo nel contesto.
  3. anche se apro tutti i repository in intellij in una sola volta, non li tratta come interdipendenti, quindi la ridenominazione di una classe non aggiornerebbe i riferimenti, ecc. appropriatamente. Prima mi vuole mvn install them.
  4. se ho bisogno di rilasciare più moduli, devo entrare in ogni modulo e digitare mvn release , non vedo un buon modo per farlo per i moduli che sono cambiati dall'ultima versione in una volta (sarebbero comunque avere versioni differenti).

Ho pensato di creare un repo multi-modulo, ma poi ho ancora il problema repo, e non sembra aver senso dal momento che li rilascio con le loro versioni. Ogni volta che ho visto git submodule s usato (compresi i miei tentativi) hanno causato più problemi di quanti ne avessero risolti. Potrei semplicemente scrivere alcuni script di shell o makefile o qualcosa del genere, ma sembra un'ultima risorsa. È possibile che io debba sopportare il dolore iniziale mentre le cose si stabilizzano.

C'è un buon strumento (s) che risolverà i miei problemi?

    
posta xenoterracide 09.02.2017 - 03:47
fonte

2 risposte

1

Questa potrebbe essere una risposta soggettiva, ma trovo che i sottomoduli git, combinati con un buon Makefile, possono inizializzare il codice in modo fluido anche da IntelliJ.

I makefile hanno la caratteristica sottile ma impressionante di saltare le regole di costruzione che puntano a un percorso o una cartella esistente. Questo è in gran parte un (benevolo) passatempo dai giorni C di un tempo, quando compilare significava trasformare un .c in un .o. Per pulire e ricompilare, devi semplicemente eliminare i tuoi .o e avviare di nuovo make.

Mappando i tuoi sottomoduli come bersagli, puoi inizializzarli automaticamente solo quando mancano, praticamente senza logica ma i comandi git stessi. Effettua anche le spedizioni su fondamentalmente ogni SO per impostazione predefinita, il che è un bel vantaggio.

    
risposta data 08.10.2017 - 02:41
fonte
0

Se il sistema operativo che usi per lo sviluppo lo supporta (tutto quello che so fare, in qualche modo), usa i link simbolici per fare in modo che l'IDE consideri le directory del codice sorgente delle dipendenze come parte del progetto.

Dovrai utilizzare la configurazione e creare file che siano a conoscenza di ciò che stai facendo mentre sviluppi.

Nei test e nella distribuzione, non dovrebbero esserci collegamenti simbolici e il processo di gestione delle dipendenze formale dovrebbe prendere il sopravvento.

    
risposta data 09.02.2017 - 06:20
fonte

Leggi altre domande sui tag