--
Vous recevez ce message, car vous êtes abonné au groupe Google Groupes lescastcodeurs.
Pour envoyer un message à ce groupe, adressez un e-mail à lescast...@googlegroups.com.
Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse lescastcodeur...@googlegroups.com.
Pour plus d'options, consultez la page de ce groupe : http://groups.google.com/group/lescastcodeurs?hl=fr
--
Vous recevez ce message, car vous êtes abonné au groupe Google Groupes lescastcodeurs.
Pour envoyer un message à ce groupe, adressez un e-mail à lescast...@googlegroups.com.
Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse lescastcodeur...@googlegroups.com.
Pour plus d'options, consultez la page de ce groupe : http://groups.google.com/group/lescastcodeurs?hl=fr
Autant le faire dès le début, si ça correspond à un besoin...
Le 6/13/12 5:08 PM, Moandji Ezana a écrit :En fait, ce que j'ai voulu dire, c'est qu'il semble que cela corresponde à un besoin, donc il faut le faire. C'est un peu comme se demander s'il faut créer une interface ou pas, le mieux est de le faire tout de suite, ça ne mange pas de pain.
2012/6/13 Emmanuel Lécharny<elec...@gmail.com>
Autant le faire dès le début, si ça correspond à un besoin...C'est bien ce que j'ai dit. Jean-Sébastien ne sait pas encore si c'est
nécessaire.
Dès que la question se pose, c'est qu'il y a un besoin. Découpler plus tard, c'est juste carrément plus pénible.
Vu que le coût d'extraire ces packages en artifacts Maven
indépedents par la suite est très faible, pourquoi le faire maintenant si
le bénéfice est inconnu?
Chaque module est complètement indépendant. Il peut être utilisé par d'autre projet, si besoin, puisqu'il va faire l'objet d'un artifact qui sera présent dans ton repo, si tu le déploies, bien sûr.
Pour les fans des modules: j'en ai peut-être une mauvaise compréhension,
mais les modules ne sont-ils pas faits pour des éléments d'un *même*
projet? Or, ici, l'intérêt d'avoir des artifacts séparés, c'est de les
utiliser dans plusieurs projets.
En fait, la bonne question est plutôt de savoir ce que tu déploies dans le repo central pour que ce soit visible. Mais rien ne t'empêche de découper en modules avant.
C'est un peu comme se demander si on met toutes les classes dans un même package, ou si on créer des packages distincts.
--
Vous recevez ce message, car vous êtes abonné au groupe Google Groupes lescastcodeurs.
Pour envoyer un message à ce groupe, adressez un e-mail à lescastcodeurs@googlegroups.com.
Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse lescastcodeurs+unsubscribe@googlegroups.com.
Le 13 juin 2012 17:08, Moandji Ezana <mwa...@gmail.com> a écrit :2012/6/13 Emmanuel Lécharny <elec...@gmail.com>Autant le faire dès le début, si ça correspond à un besoin...C'est bien ce que j'ai dit. Jean-Sébastien ne sait pas encore si c'est nécessaire. Vu que le coût d'extraire ces packages en artifacts Maven indépedents par la suite est très faible, pourquoi le faire maintenant si le bénéfice est inconnu?Pour les fans des modules: j'en ai peut-être une mauvaise compréhension, mais les modules ne sont-ils pas faits pour des éléments d'un *même* projet? Or, ici, l'intérêt d'avoir des artifacts séparés, c'est de les utiliser dans plusieurs projets.Là tu auras bien les deux : la séparation claire des dépendances et l'impossibilité de créer des liens pourraves (genre circulaires entre l'UI et ta couche métier, tout à fait possible dans un seul projet, et ce n'est pas un exemple en l'air).
Et côté dépendances, d'un point de vue externe, rien ne différencie un "module" Maven d'un projet classique (et en fait, même en interne, c'est pratiquement pareil). Le jar produit aura strictement la même forme et sera utilisable pareil que s'il avait été produit via un projet autonome.
--
--
Et côté dépendances, d'un point de vue externe, rien ne différencie un "module" Maven d'un projet classique (et en fait, même en interne, c'est pratiquement pareil). Le jar produit aura strictement la même forme et sera utilisable pareil que s'il avait été produit via un projet autonome.
C'est un peu comme se demander s'il faut créer une interface ou pas, le mieux est de le faire tout de suite, ça ne mange pas de pain.
Dès que la question se pose, c'est qu'il y a un besoin.
--
Vous recevez ce message, car vous êtes abonné au groupe Google Groupes lescastcodeurs.
Pour envoyer un message à ce groupe, adressez un e-mail à lescastcodeurs@googlegroups.com.
Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse lescastcodeurs+unsubscribe@googlegroups.com.
Pour plus d'options, consultez la page de ce groupe : http://groups.google.com/group/lescastcodeurs?hl=fr
Pour envoyer un message à ce groupe, adressez un e-mail à lescast...@googlegroups.com.
Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse lescastcodeur...@googlegroups.com.
Le 21 juin 2012 09:09, "Jean-Sébastien FRANCK" <jsebf...@gmail.com> a écrit :
>
> Merci à tous pour vos conseils. Vous m'avez convaincu de partir sur un découpage en artifact maven dès à présent.
>
> Je suis parti dans un premier temps sur un découpage en module et je trouve que c'est en effet très pratique de pouvoir exécuter une commande maven sur l'ensemble de mes modules à partir du projet parent. Cependant, en terme de réutilisation de module, je ne suis pas convaincu : le fait que le groupId du projet parent soit hérité vers les modules est génant.
Non. S'il est hérité c'est que c'est toi qui l'a dit. Tu es devant un "modèle objet de projet", donc ton module enfant aura le même groupid que son tant que tu ne le redéfinis pas.
Après tu as raison de te poser la question de la dépendance entre les deux. Si par exemple ce module enfant sera releasé pas dans le même temps que toute la hiérarchie, alors mieux vaut le sortir. Et à ce propos : préfère de loin avoir une seule et unique version pr un même projet multimodules.
Un module B dépend du module A, une modification de A implique de builder complétement A pour pouvoir l'utiliser dans B. Les IDE tentent avec plus ou moins de succès de pallier a cette lacune mais des fois c'est pas jojo.
--
Je suis d'accord. Cela pose néanmoins le problème de la reproductibilité du build entre d'un coté Maven, l'outil de build "officiel" et l'IDE qui simule avec plus ou moins de succès le fonctionnement de Maven.
Il convient d'être pragmatique et de découper en module quand vraiment il y a un intérêt, technique, métier, mais aussi en terme de stabilité des API / interfaces. Le découpage ne module peut casser la productivité a coup d'aller retour entre les modules.
Module B dépend de A. Le dev modifie A, pour que B profite de A, le dev doit lancer un install qui lance tous les tests du module A, package, puis copie sur le repo local. Coté B il lance nécessairement compile avec un clean pour faire bonne figure. Si B est une webapp, la phase package rapatrie la dépendance. Bref, bonjour les I/O et la lourdeur.
Le comble étant le couple Maven + JEE. Le bon coté c'est que cela demande, comme du temps des cartes perforées, d’extrêmement bien peaufiner son code et ses tests!
Du coup j'ai convaincu ma boite d'investir dans des SSD et une licence JRebel et parce que j'ai eu le choix sur un nouveau projet je suis passé à Grails (avec encore des problèmes liés à la compatibilité Maven)
2012/6/21 Nicolas Labrot <nit...@gmail.com>Je suis d'accord. Cela pose néanmoins le problème de la reproductibilité du build entre d'un coté Maven, l'outil de build "officiel" et l'IDE qui simule avec plus ou moins de succès le fonctionnement de Maven.
Il convient d'être pragmatique et de découper en module quand vraiment il y a un intérêt, technique, métier, mais aussi en terme de stabilité des API / interfaces. Le découpage ne module peut casser la productivité a coup d'aller retour entre les modules.
Oh, tiens, ca commence à sentir un peu le petit troll :-)
Module B dépend de A. Le dev modifie A, pour que B profite de A, le dev doit lancer un install qui lance tous les tests du module A, package, puis copie sur le repo local. Coté B il lance nécessairement compile avec un clean pour faire bonne figure. Si B est une webapp, la phase package rapatrie la dépendance. Bref, bonjour les I/O et la lourdeur.
Je ne vois pas le problème dans ce cas-là.D'après ce que je comprend (et même si ça va faire beugler de rage Emmanuel), l'un des intérêts des tests unitaires lancés par maven (et donc du build multi-module - exactement comme celui que j'utilise), c'est de pouvoir vérifier la stabilité du build, et rien ne la vérifie mieux que de lancer les tests dnas un paquet d'environnements. Par exemple, au boulot, on lance nos tests sur différentes versions de Windows, et sur Mac, et ça suffit pour nous montrer des erreurs plus ou moins comiques (des repositories non standard qui s'évanouissent dans la nature avec les artefacts qu'ils contiennent - genre le repository java.net, d'autres qui sont temporairement injoignables, des tests qui marchent en fait parce qu'on a mis le projet dans un dossier sans espaces, ou parce qu'un dossier d ela machine a les bonnes permissions).Bref, pour moi, même si c'est lourd, c'est la garantie d'un build convergent.
Le comble étant le couple Maven + JEE. Le bon coté c'est que cela demande, comme du temps des cartes perforées, d’extrêmement bien peaufiner son code et ses tests!Je ne comprend pas trop, là.Parce que c'est long, tu ne peux pas te permettre de louper ton coup ?NON.C'est long parce que c'est découpé en plusieurs modules.
Pour illustrer, j'ai un build comprenant- un ejb-jar- quelques wars- un ear déployé sur un glassfish local- du code client Java, C++, et FlexEvidement, le build complet est long.Mais l'avantage du build multi-module, c'est que si je travaille sur la partie client Java, je ne recompile tout le projet QUE quand je fais un svn update. Là, oui, c'est long (environ 3 mn). Sinon, ça n'en prend qu'une (le temps de recompiler/tester/package tout le code client).Et personnellement, je préfère un build long car bourré de tests qu'un build rapide que je teste après à la main.
Ah, le SSD, j'aurais aimé. hélas, c'était hors-budget (ca fait toujours bizarre quand ou coûte quelques centaines d'eurs par jour de se faire refuser un ivnestissement de 3 jours de salaire max ...).
Du coup j'ai convaincu ma boite d'investir dans des SSD et une licence JRebel et parce que j'ai eu le choix sur un nouveau projet je suis passé à Grails (avec encore des problèmes liés à la compatibilité Maven)
2012/6/22 Nicolas Delsaux <nicolas...@gmail.com>2012/6/21 Nicolas Labrot <nit...@gmail.com>Je suis d'accord. Cela pose néanmoins le problème de la reproductibilité du build entre d'un coté Maven, l'outil de build "officiel" et l'IDE qui simule avec plus ou moins de succès le fonctionnement de Maven.
Il convient d'être pragmatique et de découper en module quand vraiment il y a un intérêt, technique, métier, mais aussi en terme de stabilité des API / interfaces. Le découpage ne module peut casser la productivité a coup d'aller retour entre les modules.
Oh, tiens, ca commence à sentir un peu le petit troll :-)
Module B dépend de A. Le dev modifie A, pour que B profite de A, le dev doit lancer un install qui lance tous les tests du module A, package, puis copie sur le repo local. Coté B il lance nécessairement compile avec un clean pour faire bonne figure. Si B est une webapp, la phase package rapatrie la dépendance. Bref, bonjour les I/O et la lourdeur.
Je ne vois pas le problème dans ce cas-là.D'après ce que je comprend (et même si ça va faire beugler de rage Emmanuel), l'un des intérêts des tests unitaires lancés par maven (et donc du build multi-module - exactement comme celui que j'utilise), c'est de pouvoir vérifier la stabilité du build, et rien ne la vérifie mieux que de lancer les tests dnas un paquet d'environnements. Par exemple, au boulot, on lance nos tests sur différentes versions de Windows, et sur Mac, et ça suffit pour nous montrer des erreurs plus ou moins comiques (des repositories non standard qui s'évanouissent dans la nature avec les artefacts qu'ils contiennent - genre le repository java.net, d'autres qui sont temporairement injoignables, des tests qui marchent en fait parce qu'on a mis le projet dans un dossier sans espaces, ou parce qu'un dossier d ela machine a les bonnes permissions).Bref, pour moi, même si c'est lourd, c'est la garantie d'un build convergent.
Les TU/TI sont indispensables. Devoir les jouer entièrement à chaque modification dans le même processus de développement de mon point de vu bcp moins.
Le comble étant le couple Maven + JEE. Le bon coté c'est que cela demande, comme du temps des cartes perforées, d’extrêmement bien peaufiner son code et ses tests!Je ne comprend pas trop, là.Parce que c'est long, tu ne peux pas te permettre de louper ton coup ?NON.C'est long parce que c'est découpé en plusieurs modules.
C'est justement ce que je voulais dire ;) :
C'est long parce que c'est découpé en plusieurs modules => parce que c'est long, je ne peux pas me permettre de louper mon coup
Pour illustrer, j'ai un build comprenant- un ejb-jar- quelques wars- un ear déployé sur un glassfish local- du code client Java, C++, et FlexEvidement, le build complet est long.Mais l'avantage du build multi-module, c'est que si je travaille sur la partie client Java, je ne recompile tout le projet QUE quand je fais un svn update. Là, oui, c'est long (environ 3 mn). Sinon, ça n'en prend qu'une (le temps de recompiler/tester/package tout le code client).Et personnellement, je préfère un build long car bourré de tests qu'un build rapide que je teste après à la main.
Le multi module est conceptuellement supérieur, bcp moins avec Maven. Mon experience est surtout dans les webapps.
Je reprend mon exemple appliqué au webapp :
Module B est un war, module A un JAR. Module B dépend de A. Le dev modifie A, pour que B profite de A, le dev doit lancer un install qui lance tous les tests du module A, package, puis copie sur le repo local. Coté B il lance nécessairement la phase package pour construire la webapp, et si vraiment il est consciencieux il joue les tests d'intégration. Comme la webapp est modifiée le dev redéploie. Il rafraichie son navigateur se remet dans le contexte dans lequel il était précédemment.
Mis bout à bout, tu arrives facilement à 5 minutes de perdu. Surtout si la personne switch sur une autre tache.
Ah, le SSD, j'aurais aimé. hélas, c'était hors-budget (ca fait toujours bizarre quand ou coûte quelques centaines d'eurs par jour de se faire refuser un ivnestissement de 3 jours de salaire max ...).
Du coup j'ai convaincu ma boite d'investir dans des SSD et une licence JRebel et parce que j'ai eu le choix sur un nouveau projet je suis passé à Grails (avec encore des problèmes liés à la compatibilité Maven)
Dans ma boite ce fut un lobbying de plus d'1 an ;), qui fut possible car les ordinateurs devaient être changés.