2012-02-23 6 views
5

Notre groupe est un peu nouveau pour le développement basé sur JVM. Nous développons des applications composées de nombreuses autres bibliothèques.Gestion des dépendances avec applications Play 2.0

Nous trouvons que le cadre de jeu est très attrayant pour le développement d'applications Web. Le cadre est génial, mais la gestion des dépendances pour nos bibliothèques développées localement est quelque peu frustrante. Nous utilisons le RC2 de Play 2.0, et bien que nous soyons capables d'obtenir des changements dans nos bibliothèques chargées dans Play, c'est certainement un processus gênant qui interrompt le processus de lecture normalement fluide. Ce que nous faisons, c'est pousser nos bibliothèques vers notre dépôt Maven local (sur chaque machine de développement), puis réimporter ces mêmes bibliothèques dans le projet Play. Cela fonctionne, mais comme je l'ai dit, c'est gênant.

Y a-t-il des meilleures pratiques que nous devrions utiliser pour rendre ce travail un peu plus fluide?

FWIW, nous utilisons IntelliJ 11.0 (Ultimate)

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

Je J'obtiens de bonnes réponses sur la façon d'améliorer mon processus de construction Maven, et j'apprécie cela. Cependant, ce n'est pas tout à fait la réponse que je cherche. Pour concrétiser cela, supposons que je construis à la fois un service et une application Web pour surveiller/gérer le service. Le service est un projet simple Java/Scala et l'application Web est un jeu! projet. Nous appellerons ces 'Service' et 'App'. (S'il vous plaît ne pas pinailler sur cette structure proposée, je simplifie pour les fins de la question)

Dans Eclipse ou IntelliJ, je peux ajouter le 'Service' Module (ou Project pour Eclipse) comme une dépendance de le projet 'App'. Cela permet une rotation très rapide des développeurs lors de modifications dans la bibliothèque 'Service' (par exemple, j'ajoute une propriété à un modèle). Recompiler et exécuter est un couple d'ordres de grandeur plus rapide que compiler, empaqueter, déployer, importer et recharger le navigateur. D'après mes lectures de la documentation Play 2.0 et SBT, ma seule vraie réponse est de faire de 'Service' un sous-projet de 'App'. Y a-t-il une meilleure réponse à cela?

Répondre

1

Vous avez 2 options.

Le premier, comme Rich mentionné, est un référentiel local. Cela ne signifie pas que le dossier local de votre machine dev est créé par maven en tant que cache local et que vous l'utilisez. Cela signifie un serveur central dans votre LAN où vous stockez les versions des applications pour Play à récupérer plus tard. Nexus, tel que recommandé par Rich, est une excellente option.

La deuxième option consiste simplement à créer vos fichiers jar et à les déployer en tant que bibliothèques non gérées dans votre dossier "lib". Vous pouvez ensuite valider cela sur votre système de gestion de source et tous les développeurs auront la même chose.

Je recommande la première approche, beaucoup mieux à long terme, mais c'est votre choix.

ÉDITER SUR COMMENTAIRE Vous dites que vous ne voulez pas gérer les dépendances. Le seul troisième scénario que je peux imaginer est que vous voulez avoir tout le code en bloc. Dans ce cas, vous pouvez utiliser subprojects. Je ne vois pas d'autres alternatives.

+0

J'apprécie ce que vous dites, mais vous essayez toujours d'améliorer un processus que je suis en train d'éliminer. Je vais modifier la question pour clarifier un peu cela. –

+0

@AndyDavis voir la mise à jour –

+0

Merci encore pour votre contribution. Si vous pouviez jeter un coup d'oeil sur mon exemple et voir si les sous-projets sont la solution, je l'apprécierais. –

0

Le jeu a en effet un grand intérêt dans la plupart des cas. Mais, il y a un cas où Play n'est peut-être pas la meilleure solution, exactement le problème que vous signalez: lorsqu'il y a d'autres composants, les libraires doivent être intégrés dans l'application. Je ne dis pas que ce n'est pas possible, ce n'est tout simplement pas la façon dont le jeu a été conçu.

+0

désolé mais c'est FUD. Play 2.0 utilise sbt pour gérer les dépendances, et les différences dans cette zone entre maven, sbt ou ivy sont presque nulles. Alors, tous les projets qui utilisent l'un d'entre eux sont-ils mauvais? :) –

+0

Je n'ai peut-être pas assez d'expérience avec Play2 mais c'était certainement le cas de Play 1.x. –

1

Vous devriez peut-être pousser à un miroir/proxy local Maven tel que Nexus.

+0

J'ai déjà un référentiel local. Je ne cherche pas à améliorer cela autant que je cherche à le contourner (au moins pour le développement) –