Logiciel d'automatisation : comment les utiliser ?

Maven, Ant, etc.

a marqué ce sujet comme résolu.

Bonjour,

Je me pose des questions au sujet des logiciels de gestion de projet (Maven, Ant, etc. pour Java). Comment doit-on les utiliser (je ne parle pas au niveau technique) ? Dans quel cadre les utiliser ? Doit-on les utiliser seul ou avec d'autres outils ? Par exemple, doit-on les utiliser lorsque l'on développe (compilation toute quelques minutes). J'ai l'impression que ce n'est pas trop leur but. D'après ce que je comprend, il faut de préférence les utiliser lorsque l'on veut faire des release.

J'en conclus donc que, lorsque l'on n'utilise pas Eclipse, on doit avoir deux outils un pour le développement en soit (makefile) et un autre pour la création de release. Ai-je raison ?

Merci d'avance,

Cordialement,

Dnomyar

+0 -0

Bonjour,

Pour répondre rapidement, déjà, tu peux très bien utiliser Maven ou Ant avec Eclipse. Tu peux te servir d'Eclipse pour compiler ton projet ce n'est pas un problème, cependant cela va vite soulever des problèmes quand tu travailles en équipe :

  • Comment faire pour gérer les différentes dépendances ? Que faire quand on en ajoute une ? Quand on fait une montée de version d'une dépendance ? On copie le jar et on le met dans le dossier lib ? Mouais… Ou alors on les met dans le gestionnaire de versions… Mais si j'ai 3 Go de dépendances ? Et que faire quand on a 50 dépendances ? Comment être sûr qu'on n'a rien oublié ?

En l'occurence tu gères toutes tes dépendances avec Maven, tu leur associes un numéro de version dans une variable comme ça ta montée de version est instantanée pour tous tes projets et tous les développeurs.

  • Quelle version du compilateur utiliser ? Il faut que tous les membres du projet aient la même et que ce soit configuré sur leur IDE…

Pareil, c'est à Maven que tu vas spécifier la version du compilateur.

  • Imaginons que l'on travaille sur plusieurs projets en même temps (pour te donner un exemple, je travaille actuellement sur un projet bancaire qui comporte plus de 150 projets sous Eclipse). Comment faire pour faire une montée de version d'un des projets ? On change le jar dans les 149 projets ? Et surtout il ne faut pas en oublier un seul ;)

Une variable à changer et c'est fini. Un Ctrl+H sur tous les pom.xml (= 20 secondes chronos) pour remplacer toutes les dépendances.

  • Comment t'assurer que tous les développeurs font des commit qui compilent ? Que leurs tests unitaires fonctionnent tous ?

Tu utilises un serveur d'intégration continue qui va builder ton projet à chaque push et exécuter les tests. Il va exécuter des tâches que tu vas décrire avec Maven.

Ici je ne fais que te donner quelques questions auxquelles Maven répond assez facilement une fois qu'on l'a configuré. Mais quand on maîtrise bien ces outils c'est vraiment très puissant.

EDIT : et ce ne sont pas des outils de gestion de projets, mais plutôt des outils de gestion du "code" de manière générale (dépendances, tests, documentation, etc.)

+1 -0

Bonjour,

Un outil comme Ant, est avant tout un outil qui te permet de compiler un projet Java (certains projets peuvent être plus ou moins complexe à compiler). Maven quand a lui, te permet surtout de gérer les dépendances (bibliothèques tierces) de ton programme. Je t'invite à lire mon article au paragraphe "La gestion de dépendances" pour comprendre un peu mieux.

Dans mon cas (comme beaucoup), j'utilise Maven essentiellement pour structurer mon code sous forme de module, pour pouvoir travailler chaque module de manière indépendante, et rendre un module utilisable par quelqu'un d'autre.

Maven se branche sur la plupart des IDE (Eclipse, etc.) et même si tu dois compiler toutes les minutes, il te compilera que les fichiers que tu as modifié entre deux compilation. Donc Maven (et sa myriade de plugin) se révèle intéressant quand tu travaille avec d'autres personnes et/ou si tu as un cycle de release un tant soit peu professionnel.

EDIT : grillé par Happy

Attention, ce ne sont pas à proprement parler des "logiciels de gestion de projet". MS Project est un logiciel de gestion de projets. Ant est un outil de construction (build tool), Maven un outil de gestion de dépendances.

Je dirais que la question à se poser c'est :

  • quelles tâches j'exécute de façon rébarbative pour construire mon projet et qui pourraient être automatisées
  • comment vais-je distribuer mon projet (les sources)
  • de quoi dépend mon projet (Happy a détaillé ce cas là)

A partir de là, tu peux faire le bon choix d'outil.

Pour ma part j'utilise souvent Gradle pour sa souplesse. Il "monte en puissance" avec le projet. Depuis l'état initial avec quelques dépendances et une ou deux tâches (construit, teste, …) jusqu'à un projet d'envergure avec des dizaines de dépendances et tout autant de tâches (construit le front, le back, optimise ci ou ça, fais des tests unitaires, des tests de charge, …).

Je trouve la DSL (Domain Specific Language : le langage de description des dépendances/tâches) utilisée très souple et facile à lire et à comprendre. Mais néanmoins puissante. On peut quasiment tout faire avec Gradle.

+1 -0

Merci pour ces précisions qui confirment ce que j'avais compris.

Je n'utilise pas Eclipse. Je n'aime pas l'éditeur ni l'apparence graphique. Et l'éditeur on s'en sert continuellement. Je ne comprend pas pourquoi ils font pas un mix de Sublime Text (éditeur et fonctionnalités) et d'Eclipse (pour les fonctionnalités avancées). Actuellement j'utilise donc Sublime Text avec un makefile pour compiler.

Si j'ai dis que Maven ne me semblais pas un outil idéal pour plusieurs raisons :

  • A chaque compilation c'est toute une page d'info, que je n'ai pas besoin, qui sortent sur le terminal
  • Pas moyen de trouver un bon tuto sur Maven la documentation est très limitée. (Vous savez ou je peux en trouver un ?)
  • Il semble difficilement personnalisable
  • Il me semblais qu'il recompilait toutes les classes (même celle qui n'étaient pas modifiées)

@firm1 J'ai lu ton article :) C'est d'ailleurs pourquoi j'ai créé ce sujet.

Donc, selon vous, je peux utiliser Sublime Text et Maven (ou Ant ou Gradle) sans avoir besoin de makefile ? (En me servant uniquement de Maven pour compiler & co)

Gradle me semble plus simple à utiliser (au niveau de la syntaxe du fichier de config) mais de nouveau quand on regarde la doc, il me semble qu'il n'y a pas l'étape exécution (http://www.gradle.org/docs/current/userguide/tutorial_java_projects.html#N103CD)

Pour information ça existe un IDE Java mieux qu'Eclipse (enfin c'est sujet à débat). Regarde du côté d'IntelliJ par exemple. :)

Après effectivement avant d'avoir l'occasion de l'utiliser sur un gros projet j'ai toujours eu du mal avec Maven. Maintenant je trouve cela très bien, et comme tu le soulignes un tuto pour Maven aurait sa place sur ce site. Malheureusement je ne suis pas suffisamment connaisseur pour en proposer un.

Concernant les points que tu donnes :

A chaque compilation c'est toute une page d'info, que je n'ai pas besoin, qui sortent sur le terminal

Oui il y a beaucoup d'infos mais pas trop à mon sens

Il semble difficilement personnalisable

Je me permets de te contredire à ce sujet puisque tu peux faire vraiment ce que tu veux une fois que tu maîtrises le truc. Et il y a des plugins par centaines.

Il me semblais qu'il recompilait toutes les classes (même celle qui n'étaient pas modifiées)

Ce n'est pas le temps de compilation qui est vraiment long (sauf sur les très gros projets) mais plutôt le temps de re-télécharger les dépendances… Alors en principe si tu as ta dépendance dans ton repo local Maven ne les re-télécharge pas sauf si tu lui demandes explicitement…

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte