33 votes

Comment intégrer Play Framework 2.0 dans la gestion des constructions Gradle en utilisant les dépendances Maven ?

Play framework 2.0 est un framework autonome complet pour la création d'applications web. Probablement, beaucoup de gens ont besoin de l'intégrer dans leur gestion de build, néanmoins. Malheureusement, je n'ai pas trouvé beaucoup d'informations à son sujet.

Voici mon cas d'utilisation : Je veux créer un nouveau projet, qui utilise Scala et Play 2.0. Je ne veux PAS utiliser sbt. Je veux utiliser Gradle, et la gestion des dépendances doit se faire via les dépôts Maven.

Je n'ai trouvé que ce module de jeu : http://www.playframework.org/modules/maven-1.0/home qui prend en charge la gestion des dépendances via Maven.

Je cherche quelque chose comme ces exemples dans Grails : https://github.com/grails/grails-gradle-plugin o http://grails.org/doc/latest/guide/commandLine.html#4.5%20Ant%20and%20Maven

Bien sûr, je pourrais écrire des scripts / tâches qui appellent "jouer les commandes de la console". Cependant, je n'aime pas cette solution. Existe-t-il un meilleur moyen d'utiliser Gradle / Maven pour la gestion des constructions ? Si c'est la seule solution, alors je devrais utiliser Gradle, qui appelle ensuite les commandes Play (c'est-à-dire sbt en interne), n'est-ce pas ? Est-ce que cela fonctionne, ou est-ce que d'autres problèmes vont apparaître ?

24voto

rodion Points 6275

C'est une affaire très délicate. SBT dans Play est utilisé pour récupérer les dépendances, compiler les sources et les modèles, et pour la compilation incrémentale SBT + la fonctionnalité de rechargement automatique. J'ai écrit un build.gradle script pour résoudre toutes les dépendances de Play 2.0 et mettre en place les classpaths d'Eclipse ou d'IntelliJ IDEA, et l'a rendu public ici .

J'essaierai d'implémenter la compilation plus tard quand j'aurai le temps, mais cela nécessitera quelques recherches. Bien sûr, vous pouvez ajouter des tâches de compilation et d'exécution qui ne font que déléguer à SBT mais cela nécessiterait de décrire toutes les dépendances de votre projet à la fois dans SBT et dans Gradle, ce qui deviendra difficile à gérer.

Editar:

J'ai mis à jour le exemple de build.gradle fichier. J'ai ajouté playCompile y playClean tâches qui devraient aider dans un environnement CI. Le site playCompile fait ce qui suit :

  1. Copier toutes les dépendances utilisateur (définies dans compile configuration) pour lib/ dossier. Cela fonctionne parce que Play va gentiment récupérer tous les bocaux du dossier lib/ .
  2. Exécuter play compile pour compiler toutes les sources, les modèles et autres éléments du cadre Play.

Vous pouvez utiliser cleanCopyPlayLibs y playClean pour supprimer la sortie des commandes ci-dessus, respectivement.

Notez qu'il semble y avoir un étrange problème (bug ?) sous Windows, qui fait que même si play compile échoue, gradle vous dira qu'il a réussi.

Répondre au commentaire :

Je pense que vous manquez simplement

repositories{
  mavenCentral()
}

dans votre fichier. Vérifiez ce document .

5voto

mana Points 2019

Bonne nouvelle, depuis Gradle 2.7, il existe un plugin officiel pour Play : https://docs.gradle.org/current/userguide/play_plugin.html

3voto

spierce7 Points 1212

LinkedIn est en train de créer un plugin Gradle pour prendre en charge cette fonctionnalité. . Ils le déploient en trois étapes :

  1. Utilisation de Gradle pour construire une application Play
  2. Mode continu et recharge à chaud
  3. REPL interactif Scala

L'étape 1 est déjà terminée. Il est disponible via le Constructions nocturnes de Gradle . Sur l'article de blog lié ci-dessus, ils encouragent les gens à essayer.

0voto

Kiran Points 424

J'ai conçu un simple build script dans Gradle pour Play Framework 1.2.x que vous pourriez aussi utiliser pour Play 2.x

https://github.com/kirang89/play-gradle

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X