2012-02-23 23 views
5

Il nostro gruppo è un po 'nuovo allo sviluppo basato su JVM. Stiamo sviluppando applicazioni composte da molte altre librerie.Gestione delle dipendenze con applicazioni Play 2.0

Troviamo che il framework Play sia molto interessante per lo sviluppo di applicazioni Web. Il framework è ottimo, ma la gestione delle dipendenze per le nostre librerie sviluppate localmente è alquanto irritante. Stiamo usando RC2 di Play 2.0 e, sebbene siamo in grado di caricare i cambiamenti nelle nostre librerie in Play, è sicuramente un processo scomodo che interrompe il normale processo di riproduzione.

Quello che stiamo facendo è spingere le nostre librerie nel nostro repository Maven locale (sul computer di ogni sviluppatore) e poi importare quelle stesse librerie nel progetto Play. Funziona, ma come ho detto, è imbarazzante.

Ci sono delle best practice che dovremmo impiegare che renderanno questo lavoro un po 'più fluido?

FWIW, stiamo usando IntelliJ 11,0 (Ultimate)

============ EDIT ============

I' Sto ottenendo buone risposte su come migliorare il mio processo di costruzione di Maven, e lo apprezzo molto. Tuttavia, questa non è esattamente la risposta che sto cercando.

Per fare questo concreto, supponiamo che sto costruendo sia un servizio che un'applicazione Web per il monitoraggio/gestione del servizio. Il servizio è un semplice progetto Java/Scala e l'app Web è un gioco! progetto. Chiameremo questi "Servizi" e "App". (Si prega di non snocciolare su questa struttura proposta, lo sto semplificando ai fini della domanda)

In Eclipse o IntelliJ, posso aggiungere il modulo 'Servizio' (o Progetto per Eclipse) come dipendenza di il progetto 'App'. Ciò consente un rapido turnaround dello sviluppatore quando si apportano modifiche nella libreria 'Service' (ad esempio, aggiungo una proprietà a un modello). Ricompilare ed eseguire è un paio di ordini di grandezza più veloce di compilare, impacchettare, distribuire, importare e ricaricare il browser.

Sulla base della mia lettura della documentazione di Play 2.0 e SBT, la mia unica vera risposta è di rendere "Service" un sottoprogetto di "App". C'è una risposta migliore a questo?

risposta

1

Hai 2 opzioni.

Il primo, come menzionato Rich, è un repository locale. Ciò non significa la cartella locale nella macchina di sviluppo che Maven crea come cache locale e che stai utilizzando. Significa un server centrale nella tua LAN in cui si memorizzano le versioni delle applicazioni per Play da recuperare in seguito. Nexus, come raccomandato da Rich, è una grande opzione.

La seconda opzione è semplicemente creare i propri vasi e distribuirli come librerie non gestite nella cartella "lib" "lib". Puoi quindi trasferirli al tuo sistema di gestione dei sorgenti e tutti gli sviluppatori avranno lo stesso.

Raccomando il primo approccio, molto meglio a lungo termine, ma è la vostra scelta.

EDIT ON COMMENTO si dice che non si desidera gestire le dipendenze. L'unico terzo scenario che posso immaginare è che si desidera avere tutto il codice come blocco. In tal caso è possibile utilizzare subprojects. Non vedo altre alternative.

+0

Apprezzo quello che stai dicendo, ma stai ancora cercando di migliorare un processo che sto cercando di eliminare. Ho intenzione di modificare la domanda per chiarire questo un po '. –

+0

@AndyDavis vedi aggiornamento –

+0

Grazie ancora per l'input. Se tu potessi dare un'occhiata al mio esempio e vedere se i sottoprogetti sono la strada da percorrere, lo apprezzerei. –

0

Il gioco ha davvero un grande interesse nella maggior parte dei casi. Ma c'è un caso in cui Play potrebbe non essere la soluzione migliore, esattamente il problema che stai sottolineando: quando ci sono altri componenti, i libraires devono essere integrati nell'applicazione.

Non sto dicendo che non è possibile, semplicemente non è il modo in cui Play è stato concepito.

+0

scusate ma questo è FUD. Play 2.0 usa sbt per gestire le dipendenze e le differenze in quest'area tra maven, sbt o edera sono quasi nulle. Quindi, tutti i progetti che usano uno di loro sono sbagliati? :) –

+0

Potrei non avere abbastanza esperienza con Play2 ma è stato certamente il caso di Play 1.x. –

1

È consigliabile inviare a un mirror/proxy Maven locale come Nexus.

+0

Ho già un repository locale. Non sto cercando di migliorarlo tanto quanto sto cercando di bypassarlo (almeno per lo sviluppo) –

Problemi correlati