Ho a disposizione un'applicazione piuttosto ampia (diverse MLOC) che mi piacerebbe suddividere in più parti separate manutenibili. Attualmente il prodotto è composto da circa 40 progetti Eclipse, molti dei quali hanno interdipendenze. Questo da solo rende un sistema di generazione continua non fattibile, perché dovrebbe ricostruire molto con ogni controllo.Come modulare una (grande) app Java?
C'è un modo "best practice" di come
- identificare le parti che possono immediatamente essere separati
- documento interdipendenze visivamente
- districare il codice esistente
- maniglia "patch" dobbiamo applicare alle librerie (attualmente gestite inserendole nel classpath prima della libreria effettiva)
Se ci sono strumenti (gratuiti/aperti) per supportarlo, apprezzerei i puntatori.
Anche se non ho alcuna esperienza con Maven sembra che costringa un design molto modulare. Mi chiedo ora se si tratta di qualcosa che può essere adattato in modo iterativo o se un progetto che doveva usarlo avrebbe dovuto essere strutturato con la modularità in mente sin dall'inizio.
Modifica 2009-07-10
Siamo nel processo di scissione alcuni moduli di base utilizzando Apache Ant/Ivy. Strumento davvero utile e ben progettato, che non impone tanto a te come fa Maven.
ho scritto alcuni dettagli più generali e personale opinione sul perché lo stiamo facendo sul mio blog - troppo tempo per postare qui e forse non interessante a tutti, in modo da seguire a propria discrezione: www.danielschneller.com
Bene, quale sistema di generazione stai usando adesso? Se si tratta di un confronto Ant/Maven, sembra più una scelta religiosa che altro. –
Attualmente stiamo usando formica con una serie di script piuttosto complicati per generare tutti i tipi di artefatti.Ma questo non è mai stato un problema di "religione" - è stata solo una decisione presa diversi anni fa senza molti confronti. Allora le cose erano molto più piccole, ovviamente. –
Volevo solo dire che la differenza non è così grande come alcuni potrebbero essere, quindi non aspettatevi di passare a Maven per rendere tutto più semplice. –