Maven et J2EE

Je cherche à utiliser maven pour créer un projet J2EE. J’ai déjà utilisé Maven dans une application cliente Swing et ça marche très bien niveau dépendances et compilations. Malheureusement j’ai un peu plus de mal à utiliser tout ça pour mon projet J2EE qui contient 2 war à mettre dans un ear.

Je ne suis pas encore super à l’aise avec les archives war et ear (je suis plus doué avec les applis Swing), surtout qu’il n’y a aucun développements à faire sur ce projet, tout est déjà compilé et diffusé en jar et je n’ai pas accès aux sources. J’ai du mal à comprendre comment fonctionne Maven pour ce genre de projet/sous-projet et les documentations Maven sont vraiment rares, c’est une des points faibles de Maven.

Est-ce que quelqu’un pourrait m’expliquer comment gérer les applications J2EE avec Maven ou me fournir un lien qui explique bien le process ?

Woushhh sujet vaste et pas vraiment facile à coucher sur les pages d’un forum… Je bosse actuellement sur une grosse appli JEE avec maven comme outil de build, et un EAR comme artefact final mais j’aurais du mal à expliquer comment on fait fonctionner ça en quelques lignes.

En gros le principe simple pour les projets multi modules c’est que tout marche par dépendance: si tu as, en gros un projet web JEE 3-tiers, tu auras un truc du style :

  • app -> packaging EAR
    dépendance sur :
    • web -> packaging WAR
      dépendance sur :
      • service -> packaging JAR
        dépendance sur :
        • dao / util / etc… -> packaging JAR

et au final ça te donnera 1 EAR qui contiendra 1 WAR qui contiendra dans son WEB-INF/lib les JAR service / dao / util, etc…

Je vais voir si je remets la main sur un tuto basic maven / spring / tutti quanti

Comme je l’ai dis, mon cas est assez simple dans le sens où il n’y a pas de développement mais juste un “refactoring” pour faire fonctionner un projet existant déjà compilé sous Maven.

Voici un peu les différentes actions que j’ai faite :
Comme il y avait un tas de dépendances sous forme de jar sans versions, j’ai ajouté tous mes jar dans mon repository local avec un groupId à moi.
Ensuite j’ai créer deux projets de type webapp et j’ai ajouté les dépendances ci-dessus.
Maintenant je galère à créer un projet Maven de type ear, j’ai tenté en mettant ear dans “packaging” et en ajoutant mes deux projets “war” en dependency mais je me suis fait insulté avec un ‘mvn install’, j’ai du loupé un détail.

Merci de ton aide LeGzo.

Je conseille les tutoriels developpez.com
Sinon pour la façon dont tu as procédé, c’est pas forcément la meilleure des manières : le principe de Maven est de standardiser suffisament le build et les dépendances pour que quelqu’un puisse checkouter le projet (juste les sources, pas de binaires) lancer un mvn install et que mvn se démerde pour télécharger toutes les dépendances requises depuis le net pour builder l’appli.
Si tu fais des dépendances à ta sauce créées dans ton repo local tu ne respectes pas ce principe. Je t’encourage donc à retrouver sur les repository officiels maven (http://repo1.maven.org/maven2) quelles sont les dépendances que tu utilises (si tu utilises des frameworks open source type Spring, Hibernate …). Un bon moteur de recherche de dépendances est http://www.mvnrepository.com/

N’hésite pas si tu as des questions, ca fait plus de 4 ans que je me coltine du Maven :slight_smile: (à l’époque le 1 était en beta, gulps …)

Je sais que c’est “sale” de repackager tout les libs dans un groupId à moi, le problème c’est que le projet sur lequel je bosse ne nous appartient, il s’agit de Générix. Comme tu as dis je pourrais rechercher les numéros de versions de chaque bibliothèque et faire le tout proprement mais je n’ai aucune garantie sur le fait que j’arrive à trouver les numéros de versions de chaque lib et que ces bibliothèques n’ont pas subi de modifications. En plus pour l’instant je suis plus à essayé de fournir un ear qui fonctionne le plus vite possible, je verrais après pour vraiment faire les choses comme il faut, avec comme possibilité de remplacé chaque dépendance repaquagée par la bibliothèque correspondante disponible sur le repo officiel.

D’ailleur en parlant repo, je cherche à créer un repo pour ma boite, j’avais déjà fait quelque petite recherche et trouvé des softs correspondant (artifactory), lequel utilisé-vous viewww et LeGzo ?

Pour répondre à ta question, on utilise un répo d’entreprise par chez nous. Il fait une sorte de mirroir des répos du net en permettant de filtrer les trucs pas souhaités, etc…

Par contre j’ai aussi une question : quel est le but de ta manip ? Pourquoi passer ton projet en maven ? Parce que mettre du maven en début d’un projet je comprends. Migrer un projet V1 en projet V2 avec maven, je peux comprendre, pour que le dév de la V2 soit plus aisé. Mais si la conversion est juste accessoire, c’est un poids non négligeable…

Pour mettre en place repo partagé, tu n’es pas obligé d’utiliser un outil du type Artifactory, un simple répertoire partagé sur le réseau suffit, ou mieux : partage FTP, Http (mais pas d’upload dans ce cas là), webdav

Si tu veux aller plus loin et avoir un repo qui fasse office de proxy vis à vis des repository externes (comme repo1.maven.org et d’autres) tu peux installer Artifactory ou Archiva; je ne me suis jamais chargé personnellement de leur installation, mais je sais que ca peut vite être chronophage :slight_smile:

Pourquoi je passe mon projet sous Maven ? Parce que mon chef me l’a demandé :slight_smile: Plus sérieusement, il s’agit d’un application qui provient d’un éditeur et ma SSII a pas mal de projets en vue sur cet outil pour des grosses sociétés de la grande-distribution. Actuellement cet éditeur fourni un gros zip avec le projet qui possède une organisation propre et un script ant qui permet de compiler le tout.
Le but premier c’est de capitaliser le TAF entre les plusieurs projets (à venir) qui utiliseront cette application, séparer les différents modules, les mettre dans des repository SVN afin d’avoir un tronc commun, différentes branches selon les clients, …
Le but second, c’est de supprimer le script ant afin de pouvoir contrôler la compilation et le déploiement de A à Z.

Pour Artifactory, je l’ai installé mais je galère à bien configurer le tout, faut dire que faire ça un vendredi ça n’aide pas. En tout cas, il faudrait vraiment que les mecs qui font du Maven se bougent les fesses pour produire des documentations un peu plus user-friendly car ils fournissent toujours le strict minimum et ça n’est pas toujours évident pour quelqu’un qui ne connait pas l’outil de s’y mettre.

[quote=« ZGoblin, post:8, topic: 47658 »]Pourquoi je passe mon projet sous Maven ? Parce que mon chef me l’a demandé :slight_smile: Plus sérieusement, il s’agit d’un application qui provient d’un éditeur et ma SSII a pas mal de projets en vue sur cet outil pour des grosses sociétés de la grande-distribution. Actuellement cet éditeur fourni un gros zip avec le projet qui possède une organisation propre et un script ant qui permet de compiler le tout.
Le but premier c’est de capitaliser le TAF entre les plusieurs projets (à venir) qui utiliseront cette application, séparer les différents modules, les mettre dans des repository SVN afin d’avoir un tronc commun, différentes branches selon les clients, …
Le but second, c’est de supprimer le script ant afin de pouvoir contrôler la compilation et le déploiement de A à Z.

Pour Artifactory, je l’ai installé mais je galère à bien configurer le tout, faut dire que faire ça un vendredi ça n’aide pas. En tout cas, il faudrait vraiment que les mecs qui font du Maven se bougent les fesses pour produire des documentations un peu plus user-friendly car ils fournissent toujours le strict minimum et ça n’est pas toujours évident pour quelqu’un qui ne connait pas l’outil de s’y mettre.[/quote]

Voila un peu plus que le strict minimum :
http://www.sonatype.com/book/index.html#
Je ne sais pas exactement ce qu’il vaut car on m’a filé le lien un peu trop tard quand je galérais sur maven, mais pour le peu qu’il m’a servi il m’a semblé bien foutu. En tout cas il est clairement plus complet que ce qu’on trouve habituellement en doc maven.

Ah bin oui, j’ai failli oublié le très bon “Better builds with Maven”

Merci beaucoup, j’ai zyeuté un peu et effectivement, ça m’a l’air bien complet, je matte plus en détail lundi.