Maven, Eclipse, dépendances et modules..

Maven, Eclipse, dépendances et modules.. - Java - Programmation

Marsh Posté le 13-08-2008 à 08:42:06    

bon, j'ai eds emmerdes avec Maven...
 
(on se moque pas, je débute)
 
J'ai une architecture de projets Eclipse (des jars, des wars, des ears...) qui dépendent pas mal les uns des autres.
 
Mettons, par exemple :
 
fr.gfive.projet/commons (jar)
 
fr.gfive.projet/web (jar) qui dépend de commons
 
fr.gfive.projet/business (jar) qui dépend de commons
 
fr.gfive.projet/war (war) qui dépend de web, commons, et business
 
fr.gfive.projet/business-ejb(jar d'EJBs) qui dépend de business, et commons
 
Et enfin, un fr.gfive.projet/ear qui contient les autres.
 
Je bosse avec Eclipse, avec le plugin m2e, qui résous mes dépendances comme il faut, toussa, c'est très très bien...:o
 
 
 
Maintenant, je voudrais utiliser mes POMS pour faire de l'intégration continue avec Continuum...Et là, c'est le drame...
 
Si j'ai bien compris, il faut que je fasse un "super POM", qui connaît les autres, pour qu'il aille builder tout ce dont j'ai besoin...Il n'est pas foutu de gérer ça avec les dépendances. :'(
 
Parce que ça me pose un gros problème, ça : comme certains projets sont utilisés dans des ear différents, ça ne va jamais marcher, mon truc.....
 
Je veux dire par là :  
Mettons que j'aie un ProjetA, et un ProjetB, les deux contenant le module fr.gfive.projet/commons.
 
Dans le pom de ProjetA, je dis que commons est un module, très bien.
Idem dans ProjetB, toujours très bien.
 
Mais dans le pom de commons, il faut que je précise son parent.....Or, quand je builde ProjetA, c'est ProjetA le parent, et pareil pour ProjetB...Donc, je sais pas comment faire. :o
 
J'imagine que je suis pas le premier à essayer de fairece genre de truc, et qu'il doit donc y avoir une solution, mais j'ai rien trouvé de bien pertinent....
 
 
 
Et surtout, quand je voudrais builder tout ça, dans les POMs de chaque projet, je dois avoir une référence au parent...Si le parent de fr.gfive.projet/commons est par exemple un coup Projet1, et l'autre coup Projet2???  
 


---------------
Tous les sud africains sont ségrégationistes, à part Ted. (P. Desproges)
Reply

Marsh Posté le 13-08-2008 à 08:42:06   

Reply

Marsh Posté le 13-08-2008 à 11:48:03    

Citation :


Mettons que j'aie un ProjetA, et un ProjetB, les deux contenant le module fr.gfive.projet/commons.  
 

non, ils ne contiennent pas "commons", ils ont une dépendance dessus.

Citation :


Dans le pom de ProjetA, je dis que commons est un module, très bien.  


non, donc.

Citation :


Idem dans ProjetB, toujours très bien.  


non plus

Citation :


Mais dans le pom de commons, il faut que je précise son parent.....


peut être mais ...

Citation :


Or, quand je builde ProjetA, c'est ProjetA le parent, et pareil pour ProjetB...


ben nan [:el g]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 13-08-2008 à 11:56:03    

the real moins moins a écrit :

Citation :


Mettons que j'aie un ProjetA, et un ProjetB, les deux contenant le module fr.gfive.projet/commons.  
 

non, ils ne contiennent pas "commons", ils ont une dépendance dessus.

Citation :


Dans le pom de ProjetA, je dis que commons est un module, très bien.  


non, donc.

Citation :


Idem dans ProjetB, toujours très bien.  


non plus

Citation :


Mais dans le pom de commons, il faut que je précise son parent.....


peut être mais ...

Citation :


Or, quand je builde ProjetA, c'est ProjetA le parent, et pareil pour ProjetB...


ben nan [:el g]


 
Ok, là, je suis d'accord avec toi...Mais dans mon build avec Continuum, si il builde ProjetA, et que commons n'est qu'une dépendance de ProjetA, et pas un module, il ne builde pas commons... :/
 


---------------
Tous les sud africains sont ségrégationistes, à part Ted. (P. Desproges)
Reply

Marsh Posté le 13-08-2008 à 12:26:14    

gfive a écrit :

Ok, là, je suis d'accord avec toi...Mais dans mon build avec Continuum, si il builde ProjetA, et que commons n'est qu'une dépendance de ProjetA, et pas un module, il ne builde pas commons... :/


Tu setup commons en projet séparé dans continuum [:petrus dei]

 

En bonus ça vous permet de bosser sur commons sans se taper ProjetA et ProjetB

Message cité 1 fois
Message édité par masklinn le 13-08-2008 à 12:26:35

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 13-08-2008 à 12:38:04    

masklinn a écrit :


Tu setup commons en projet séparé dans continuum [:petrus dei]
 
En bonus ça vous permet de bosser sur commons sans se taper ProjetA et ProjetB


 
ben oui, c'est ce que j'avais prévu : tous mes projets séparés dans Continuum...
 
Mais ça oblige à gérer les builds Continuum à la main : mettons qu'on fait une release de ProjetA, et que comons a pas été releasé dans la version nécessaire, par exemple, Continuum ne va pas builder commons, si? :??:
 
J'entrevois qu'il y a une couille dans mon raisonnement entre Maven et Continuum, en fait (stadire que j'ai tendance à penser que si l'artefact Commons 1.0 n'existe pas,et n'a pas été releasé on a aucune raison de l'utiliser dans un pom de ProjetA....Mais bon)
 
lutain, il me faut une formation maven/continuum, en fait :'(


---------------
Tous les sud africains sont ségrégationistes, à part Ted. (P. Desproges)
Reply

Marsh Posté le 13-08-2008 à 12:53:03    

gfive a écrit :

Mais ça oblige à gérer les builds Continuum à la main : mettons qu'on fait une release de ProjetA, et que comons a pas été releasé dans la version nécessaire, par exemple, Continuum ne va pas builder commons, si? :??:


Ca a pas de sens de dire que "commons a pas été releasé dans la version nécessaire", si la version n'existe pas elle peut pas être indiquée comme dépendance dans ProjetA [:petrus75]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 13-08-2008 à 12:57:07    

masklinn a écrit :


Ca a pas de sens de dire que "commons a pas été releasé dans la version nécessaire", si la version n'existe pas elle peut pas être indiquée comme dépendance dans ProjetA [:petrus75]


a mon avis il est dans un esprit "on fout pas de <version>" et on prend ce qui vient. ça marche si tu buildes tout d'un coup.
et tu pourrais de fait faire


./mega-tout/pom.xml
            commons/pom.xml
            projetA/pom.xml
            projetA/blah1/pom.xml
            projetA/blah2/pom.xml
            projetB/bleh1/pom.xml
            et ainsi de suite ...

avec un seul numero de version pour tout [:el g]
jusqu'au jour ou tu te rend compte que, quand même, des cycles de vie séparés pour des trucs qui évoluent pas en meme temps que le reste, c'est pas si mal, meme si, houlala, il faut éditer un ou deux pom quand y'a effectivement une évolution [:el g]

Message cité 1 fois
Message édité par the real moins moins le 13-08-2008 à 12:57:56

---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 13-08-2008 à 13:04:47    

masklinn a écrit :


Ca a pas de sens de dire que "commons a pas été releasé dans la version nécessaire", si la version n'existe pas elle peut pas être indiquée comme dépendance dans ProjetA [:petrus75]


 
ouais, c'est l'idée qui commencait à poindre...
 

the real moins moins a écrit :


a mon avis il est dans un esprit "on fout pas de <version>" et on prend ce qui vient. ça marche si tu buildes tout d'un coup.
et tu pourrais de fait faire  


./mega-tout/pom.xml
            commons/pom.xml
            projetA/pom.xml
            projetA/blah1/pom.xml
            projetA/blah2/pom.xml
            projetB/bleh1/pom.xml
            et ainsi de suite ...

avec un seul numero de version pour tout [:el g]
jusqu'au jour ou tu te rend compte que, quand même, des cycles de vie séparés pour des trucs qui évoluent pas en meme temps que le reste, c'est pas si mal, meme si, houlala, il faut éditer un ou deux pom quand y'a effectivement une évolution [:el g]


 
Voilà...On est dans ce genre de truc là, en ce moment....Sauf que pas vraiment, en fait : il y a des liens dans le svn pour avoir plusieurs ./mega-tout qui mutualisent des choses. Mais c'est la merde (surtout si tu bosses sur 2 "mega-tout" en même temps : t'as 2 fois le même code dans ton workspace [:prozac]
 
Mais faire admettre aux gens que builder, ou prendre la 1.2.0 de commons, c'est la meme chose, ça va pas être évident :/Comme on a pas réellement de gestion de tags/versions, on va en chier pour changer de philo (actuellement, quand on change de version, on fait une nouvelle branche dans le svn, et on pousse dessus... Je vous dis pas le bordel)
 


---------------
Tous les sud africains sont ségrégationistes, à part Ted. (P. Desproges)
Reply

Marsh Posté le 13-08-2008 à 13:25:05    

Bon, sinon, y'a Hudson qui fait exactement ce que je veux...
 
Pur info :  
 
http://hudson.gotdns.com/wiki/disp [...] n2+project

Citation :


Automatic build chaining from module dependencies
 
Hudson reads dependencies of your project from your POM, and if they are also built on Hudson, triggers are set up in such a way that a new build in one of those dependencies will automatically start a new build of your project. Hudson understands all kinds of dependencies in POM. Namely,
 
    * parent POM
    * <dependencies> section of your project
    * <extensions> section of your project
    * <reporting> section of your project
 
This process takes versions into account, so you can have multiple versions/branches of your project on the same Hudson and it will correctly determine dependencies.


---------------
Tous les sud africains sont ségrégationistes, à part Ted. (P. Desproges)
Reply

Marsh Posté le 13-08-2008 à 13:55:24    

ah, interessant, ça, ça voudrait dire que tu peux demander a hudson de builder un module X qui a une dependence sur Y, et hudson pourrait chopper le dernier snapshot de Y ( ou le builder) meme si sur ton svn, X depend tjs d'une version plus ancienne de Y.... ? Nice.


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 13-08-2008 à 13:55:24   

Reply

Marsh Posté le 13-08-2008 à 15:08:14    

gfive a écrit :

Bon, sinon, y'a Hudson qui fait exactement ce que je veux...
 
Pur info :  
 
http://hudson.gotdns.com/wiki/disp [...] n2+project

Citation :


Automatic build chaining from module dependencies
 
Hudson reads dependencies of your project from your POM, and if they are also built on Hudson, triggers are set up in such a way that a new build in one of those dependencies will automatically start a new build of your project. Hudson understands all kinds of dependencies in POM. Namely,
 
    * parent POM
    * <dependencies> section of your project
    * <extensions> section of your project
    * <reporting> section of your project
 
This process takes versions into account, so you can have multiple versions/branches of your project on the same Hudson and it will correctly determine dependencies.



Me semble que c'est utilisé chez nous, sur <gros projet qui utilise maven> hudson déploie automatiquement les snapshots dans le repo maven quand il fait ses builds et tout et tout


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 13-08-2008 à 15:19:30    

ben en tout cas, c'est drôlement bien, comme truc...L'interface d'admin est quand même vachement plus complète et agrable que celle de Continuum.


---------------
Tous les sud africains sont ségrégationistes, à part Ted. (P. Desproges)
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed