2012-04-24 9 views
34

Play framework 2.0 è un framework standalone completo per la creazione di applicazioni Web. Probabilmente, molte persone hanno bisogno di integrarlo nella gestione delle build, tuttavia. Sfortunatamente, non ho trovato molte informazioni su di lui.Come integrare Play Framework 2.0 nella gestione build di Gradle usando le dipendenze Maven?

Ecco il mio caso d'uso: voglio creare un nuovo progetto, che utilizza Scala e Play 2.0. NON voglio usare sbt. Voglio usare Gradle e la gestione delle dipendenze dovrebbe essere fatta tramite i repository Maven.

Ho trovato solo questo modulo di riproduzione: http://www.playframework.org/modules/maven-1.0/home che supporta la gestione delle dipendenze tramite Maven.

Sto cercando qualcosa di simile a questi esempi in Grails: https://github.com/grails/grails-gradle-plugin o http://grails.org/doc/latest/guide/commandLine.html#4.5%20Ant%20and%20Maven

Certo, potrei scrivere scripts/compiti che chiamano "play comandi della console". Però, non mi piace questa soluzione. C'è un modo migliore per usare Gradle/Maven per la gestione delle build? Se questa è l'unica soluzione, allora utilizzerei Gradle, che quindi chiama i comandi di riproduzione (cioè sbt internamente), giusto? Funziona anche, o emergeranno altri problemi?

risposta

25

Questo è un affare molto complicato. SBT in Play viene utilizzato per il recupero delle dipendenze, la compilazione di sorgenti e modelli e la funzione di compilazione incrementale SBT + auto-ricarica. Ho scritto uno script build.gradle per risolvere tutte le dipendenze di Play 2.0 e impostare i percorsi di classe IDEA IntelliJ o Eclipse e lo abbiamo reso public here.

Cercherò di implementare la compilation più tardi quando avrò tempo, ma ciò richiederebbe qualche ricerca. Naturalmente, è possibile aggiungere attività di compilazione ed esecuzione che delegano solo a SBT, ma ciò richiederebbe la descrizione di tutte le dipendenze del progetto in SBT e Gradle, che diventeranno difficili da gestire.

Edit:

ho aggiornato il file sample build.gradle. Ho aggiunto playCompile e playClean attività che dovrebbero aiutare in un ambiente CI. Il compito playCompile esegue le seguenti operazioni:

  1. Copia tutte le dipendenze degli utenti (definiti nella configurazione compile) nella cartella lib/. Funziona perché Play raccoglierà gentilmente tutti i barattoli da lib/.
  2. Esegui il comando play compile per compilare tutte le origini, i modelli e altri elementi del framework Play.

È possibile utilizzare cleanCopyPlayLibs e playClean per rimuovere rispettivamente l'output dei comandi precedenti.

Nota che sembra che ci sia uno strano problema (bug?) Su Windows, il che significa che anche se play compile fallisce, gradle ti dirà che è riuscito.

Rispondi al commento:

Penso che si sta semplicemente perdendo

repositories{ 
    mavenCentral() 
} 

nel file.Controllare this doc out.

+0

Grazie per questo file build. Come continuare adesso? Crea una nuova app Play nella stessa directory usando "gioca nuovo"? La build gradle può essere aggiunta a un server CI. Tuttavia, ad es. I test di gioco devono essere eseguiti chiamando uno script "play test myApp". È questo il modo migliore per farlo? Penso che sia una soluzione accettabile per il momento ... –

+0

Dovresti usare 'gioca nuovo' per creare nuove app. Quindi copia il file gradle nella directory del progetto ed esegui "gradle idea/eclipse" per configurare il tuo IDE. Compilare con gradle non funzionerà ancora perché molte fonti dipenderanno da compilazioni di modelli di Play e classi (pacchetti 'views' e' routes'), che non è possibile compilare con la configurazione corrente. Per ora devi ancora usare il set di comandi 'play' per farlo. – rodion

+0

Ho fatto alcuni aggiornamenti. Si prega di consultare il ** Modifica ** sopra. – rodion