[Play Framework[(play2] utilise Scala SBT comme outil de build depuis la version 2.0. A la Maven, il télécharge les dépendances de votre projet Play Framework depuis des dépôts centralisés, comme Maven Central.
Cette technique est très intéressante, mais il faut bien tenir compte des inconvénients induits :
Pas de maîtrise des dépendances ou des dépôts configurés par les développeurs : on télécharge n’importe quoi depuis n’importe où
Gâchi de bande passante / latence : chaque développeur télécharge chaque dépendance depuis Internet, là où une mutualisation depuis un serveur localisé dans le réseau de l’entreprise ferait économiser de la bande passante et gagner en réactivité (latence réduite)
Vous ne pouvez pas dépendre d’artifacts uniquement internes à votre entreprise (sans les publier sur Internet)
En entreprise, 1/ est généralement résolu par “blocage naturel” : on ne peut pas télécharger depuis Internet. 2/ et 3/ peuvent se résoudre à l’aide d’un serveur proxy dédié à Maven, SBT, … comme Sonatype Nexus ou JFrog Artifactory.
Comment paramétrer Play Framework pour utiliser Artifactory ?
[J’ai déjà expliqué comment configurer SBT pour utiliser Artifactory][/configurer-scala-sbt-repository-artifactory/], mais, bien que Play Framework utilise SBT, ces explications ne s’y appliquent pas (pour le moment). SBT étant embarqué dans Play Framework, il ne lit pas les instructions de configuration fournies en ligne de commande.
Pas de différence du côté d’Artifactory en revanche.
Par la suite, je suppose que la variable PLAY_HOME
pointe vers votre installation de Play Framework 2.x.
Configurer SBT pour lire les dépôts “miroirs”
Créez le fichier ~/sbt/.repositories
avec le contenu suivant :
1 2 3 4 5 |
|
Ce fichier indique à SBT l’ensemble des dépôts qu’il peut consulter pour résoudre les dépendances :
local
: dépôt Ivy local par défaut, localisé dans~/.ivy2/
maven-local
: dépôt Maven local par défaut, localisé dans~/.m2/repository/
ivy-proxy-releases
: suivi d’une URL et d’un pattern, on indique à SBT qu’il pourra trouver les artifacts qui respectent ce pattern dans ce dépôts (pattern Ivy)maven-proxy-releases
: suivi d’une URL, le dépôt au format Maven pour les autres dépendances
Forcer Play Framework à lire le fichier ~/sbt/.repositories
Éditez le fichier $PLAY_HOME/framework/sbt/sbt.boot.properties
et complétez le bloc suivant :
1 2 3 |
|
De cette manière :
1 2 3 4 5 |
|
Avec ces deux instructions, on force Play Framework à utiliser uniquement les dépôts configurés dans le fichier ~/sbt/.repositories
.
Tester
Commencez par nettoyer votre dépôt local de cache de Play Framework (par précaution, je vous propose de simplement le déplacer) :
1
|
|
Postionnez-vous dans un projet Play, et testez :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
|
Les dépendances sont téléchargées depuis http://localhost:8180/...
, comme voulu.
Note : l’affichage obtenu peut varier selon vos dépendances paramétrées.