[JAVA]Outils d'analyse de projet

Salut les geeks.

On va commencer par l’essentiel : c’est méga urgent.
J’ai besoin de votre aide pour trouver un outil qui me sauvera la peau des roustons.

J’explique mon problème.
Je viens de reprendre une application qui doit passer en préproduction. Le problème est que le deploiement est vraiment plus strict que tous les déploiements effectués en intégration ou en recette.
Et c’est en me prennant un retour dans la face qui me signifiait que mon projet était degueulasse que j’ai constaté l’ampleur du désastre.

Concretement, j’ai trouvé dans les librairies jar inclues dans le projet une tripotée d’API. Le problème est qu’on trouve dans tous ces JARs, plusieurs fois les memes APIs ( genre SAX ) mais en plein de versions différentes.

Donc crado, bordel monstre, les serveurs se braquent et veulent rien savoir.

J’aurai donc besoin d’un outil sur top qui m’épluche mon projet, et me liste correctement tous les jars, leur contenu, les problèmes que ça va genérer, et meme eventuellement, soyons fou, me faire du ménage la dedans !

A votre bon coeur, là j’en peux plus B)

Je te conseillerais de mettre ton projet sous Maven 2 (voir ici.

Ca permet (entre autres) de ne plus avoir à gérer les librairies soit même, tout étant géré dans un (plus ou moins) petit fichier XML. Mister Maven s’occupe alors du reste. Sans compter qu’il te permet de ne plus t’occuper des dépendances de tes dépendances. Par exemple, tu utilises la librairie A, qui nécessite la librairie B. Bah dans ton POM (Projet Object Model), cad ton fichier XML qui décrit ton projet, tu lui indiques que tu as besoin de la librairie A dans telle version, et c’est tout. Maven va se charger de chopper la librairie dans un repository, puis il va également se charger de choper les librairies nécessaires à A, tout étant transparent pour l’utilisateur (toi).

Au delà de ça, Maven permet de très nombreuses choses, dont la création de plein de rapports sur ton projet, et cela gravement simplement.

Bref, c’est ce que je te recommande.

Si tu as la moindre question sur Maven, je suis à ta disposition…

[quote=“rorotaz, post:2, topic: 31583”]Je te conseillerais de mettre ton projet sous Maven 2 (voir ici.

Ca permet (entre autres) de ne plus avoir à gérer les librairies soit même, tout étant géré dans un (plus ou moins) petit fichier XML. Mister Maven s’occupe alors du reste. Sans compter qu’il te permet de ne plus t’occuper des dépendances de tes dépendances. Par exemple, tu utilises la librairie A, qui nécessite la librairie B. Bah dans ton POM (Projet Object Model), cad ton fichier XML qui décrit ton projet, tu lui indiques que tu as besoin de la librairie A dans telle version, et c’est tout. Maven va se charger de chopper la librairie dans un repository, puis il va également se charger de choper les librairies nécessaires à A, tout étant transparent pour l’utilisateur (toi).

Au delà de ça, Maven permet de très nombreuses choses, dont la création de plein de rapports sur ton projet, et cela gravement simplement.

Bref, c’est ce que je te recommande.

Si tu as la moindre question sur Maven, je suis à ta disposition…[/quote]

Bah le pire, c’est que ce projet a failli etre développé avec un Maven dessus. Mais pas eu le temps.
Là c’est clairement trop tard. Le projet est trop avancé pour amorcer une trop grosse refonte.

Le but est clairement de supprimer les librairies inutiles et d’éviter les conflits de versions. Et je ne me vois absolument pas faire ça à la main …

On a un “expert” Maven qui traine dans les locaux, je vais voir ce que je peux trouver ( mais vu le loulou, je reve pas trop )

Edit: trop long, trop complexe à mettre en place, surtout pour une appli qui rentre en TMA… Ca sera pas Maven B)
Merci quand meme rorotaz.

Bon, c’est le principal souci de Maven : Son intégration dans un projet déjà bien lancé.

Cela dit, en faisant quelques concessions, cela peut être relativement pas trop compliqué B) L’un des grands principes de Maven (mais pas que de Maven, Ruby On Rails l’a utilisé avant), c’est le “Convention Over Configuration”. En gros, tu simplifies gravement ton POM en respectant certaines conventions. Tu n’y es pas obligé, mais c’est (fortement) recommandé. Par exemple, tu dois placer les sources de ton projet dans un répertoire {monProjet}/src/main/java/. Si tu le fais, alors tu n’auras pas à préciser où trouver les sources, Maven se débrouillera tout seul. Mais si tu ne le fais pas, ce qui peut être le cas vu que ton projet est déjà avancé, ça ne bloquera en rien Maven, mais il faudra juste indiquer où sont tes sources dans le fichier POM. Donc plus tu respectes ces conventions, plus petit sera ton fichier de configuration (et donc plus lisible). Les miens sont très peu verbeux, seule la partie sur les dépendances prend vraiment de la place…

Dans ton cas, le gros de ton boulot à mon avis, c’est de bien définir les librairies qui te sont nécessaires et d’en déterminer la version à utiliser. C’est la partie la plus embêtante dans Maven je trouve…

Dernier point, Maven 2 est très largement supérieur à Maven 1, donc si vous optez pour utiliser Maven, optez pour la version 2 B)

Ouaip, je vais devoir faire ça à la main… Sur un projet de 500 jours hommes, c’est le panard complet…
Youpi, coup de fil du client, il faut ça pour dans une heure !

/me va chercher une corde B)

[quote=“Monsieur_Max, post:5, topic: 31583”]Ouaip, je vais devoir faire ça à la main… Sur un projet de 500 jours hommes, c’est le panard complet…
Youpi, coup de fil du client, il faut ça pour dans une heure !

/me va chercher une corde B)[/quote]

Tant pis alors.
Bon courage.
Et pense à Maven pour tes prochains projet B)

Je connais un outil qui permet de fournir un rapport de “dependency convergence”, càd qui liste les dépendances, trouve les dépendances en double …
Le hic, c’est que c’est un plugin maven B)

http://maven.apache.org/ref/2.0.4/maven-pl…onvergence.html

Edit : jette un coup d’oeil à http://www.kirkk.com/main/Main/JarAnalyzer