Construction des programmes Java: présentation conceptuelle et théorique de l’outil MAVEN

L’objectif de cet article est de présenter globalement MAVEN, ses concepts, et les problématiques que cet outil résout dans le processus de construction des programmes Java.

Dans le cycle de développement logiciel, la plupart du temps un outil est utilisé pour la construction des programmes.
Dans le monde Java, l’un des outils populaires pour le build (la construction) des programmes Java est l’outil MAVEN.

Pendant des années j’ai utilisé cet outil sans vraiment comprende conceptuellement, quel est son intérêt et quelles problématiques il résout.
D’où la naissance de cet article, qui a pour objectif de présenter conceptuellement MAVEN et de présenter ce qu’il résout comme problématique.

Contexte

Cycle de construction des logiciels

Une fois que les lignes de code ont été écrites et que nous souhaitions mettre en exploitation notre programme, tout une série d’opération doit être exécutée afin de pouvoir construire (build) le programme.
Un exemple de ces étapes sont les suivantes: le compilation, l’exécution des tests, le packaging de l’application, etc…
Une fois que notre programme, a été packagé alors il peut aller en production.

Gestion des dépendances

Le développement technoligique actuel est le résultat d’une accumulation des connaissances, c’est à dire qu’on ne réinvente pas la roue à chaque fois.
Et dans l’ingénierie logicielle, il n’y a pas d’exception.
Ce qui veut donc dire que, quand on pense développement d’une application, nous savons que celle ci aura des dépendances c’est à dire qu’elle dépendra d’autre logiciels(application, librairie, framework, etc..) pour son bon fonctionnement.

Problèmes

Cycle de construction des logiciels

Maintenant que nous sommes conscients qu’une série d’opérations doit être exécutée afin de construire le programme, la question qui nous viens à l’esprit est de savoir comment nous allons procéder.
Une des solutions est la rédaction des scripts qui reprendront chacune des étapes de construction de notre programme.
Maintenant, considérons que plusieurs programmeurs ont la responsabilité de rédiger le programme, comme c’est souvent le cas, et que ces programmeurs travaillent sur des environnements différents ou encore des systèmes d’exploitation(OS) différents, alors il en résultera des scripts de construction du programme différents en fonction des OS.
Si les étapes de construction du programme changent, il faudra se rappeler de l’adapter pour tous les OS, faisant émerger la problématique de maintenabilité et d’évolutivité des scripts de construction du programme.

Gestion des dépendances

Notre application ayant des dépendances, la problématique de gestion des dépendances surgit également.
Comment allons nous gérer les dépendances de notre application? Comment feront nous quand la nouvelle version d’une dépendance de notre application sortira? Comment allons nous intégrer ces dépendances dans notre programme? Toutes ces questions, sont en fait des interrogations auxquelles nous devons répondre?

Solution

Dans la sphère Java, l’un des outils répondant aux différentes problématiques décrites ci dessus est MAVEN.
L’outil MAVEN fait bien plus que ce que nous avons décrit ci dessus, mais la plupart du temps quand on entends parler de MAVEN, on
le présente comme un outil de build (de construction) des programmes ecrit en JAVA. Mais sachez que MAVEN fait beaucoup plus que ça.

Sur le site de MAVEN, on le décrit plutôt comme un outil de gestion de projet, c’est à dire qu’en plus d’être utiliser comme outil de construction des programme Java, il fait bien plus de choses.

Présentation de la philosophie et des concepts de MAVEN.

Les principes et concepts repris par MAVEN sont les suivants:

Convention au lieu de la configuration (Convention over configuration)

La plupart des programmes ont des besoins similaires, l’idée de MAVEN a dont été de comprendre ces besoins, et à partir de ça des conventions ont été définies.
Avant cette philosophie apportée par MAVEN, des projets avec des besoins similaires pouvaient avoir une structure et une organisation différentes, nécessitant de ce fait beaucoup de configuration.

C’est a dire qu’il pouvait arriver qu’au sein d’une même entreprise, si un développeur changeait de projet, il devait prendre du temps pour comprendre la structure et la configuration du nouveau projet avant de démarrer.

De ces observations, MAVEN opte pour un certain nombre de conventions répondant aux besoins de la plupart des projets, et offre la possibilité de configurer différemment les projets dont les conventions de base ne sont pas suffisantes.
Une des ces conventions est par exemple la structure du programme (emplacement, organisation de nos fichiers et de notre code source).

Le choix de présenter une interface commune

Comme décrit ci dessus, en fonction des OS, le script permettant la construction des programmes JAVA est différent.
MAVEN propose donc une interface (Qu’est ce qu’une interface?) permettant de construire un programme JAVA, sans se soucier de tout ce qui se passe en arrière plan.
C’est à dire que peut importe l’OS, les étapes de construction du programme devienne totalement transparent pour le développeur, plus besoin d’écrire un script de build en fonction de son OS.

Utilisation des plugins

Un plugin est un programme qu’on peut connecter à MAVEN. C’est à dire que lors de l’exécution de MAVEN, en fonction de la configuration fournie, MAVEN va déléguer certaines taches aux plugins.
Ce qui offre la possibilité de réutiliser ces plugins dans d’autres projets, sans la nécessité de configurer ou de rédiger des scripts en fonction du système d’exploitation.

Description conceptuelle de ce qu’est un projet

Chacun de nous avons déjà entendu parlé de la notion de projet.
Cependant seriez vous capable, de représenter la notion de projet sous forme d’un ensemble de concepts?
Ou encore, comment allez vous modéliser à travers des concepts un projet?
Si cette tâche est assignée à chacun de nous nous allons modéliser la notion de projet différemment.
Un modèle est une représentation sous forme de concepts.

Maven propose un modèle conceptuel de ce qu’il entend par « Projet ».
Et dans la sphère MAVEN, il se nomme POM (Project Object Model), c’est à dire la représentation sous forme d’objets ou encore de concept d’un projet.

La modélisation d’un projet, par MAVEN offre des caractéristiques suivantes:

  • La gestion des dépendances
  • L’accès aux repertoires distants
  • La réutilisation de la logique et du cycle de construction des programmes
  • La portabilité de MAVEN et son intégration facile dans d’autres outils tel que les IDE (Eclipse, Intellij, etc..)
  • La possibilité de filtrer et de rechercher facilement les artifacts d’un projet

Conclusion

L’idée de cet article était de présenter les principaux concepts de MAVEN et les problématiques que cet outil résout dans le processus de construction des projets JAVA.
Mais gardez à l’esprit que MAVEN, est capable de faire bien plus que tout ce qui a été présenté ici.
L’idée n’était pas de présenter toutes les fonctionnalités de MAVEN, mais plutôt de présenter son importance, ses concepts principaux, et ses principaux apports dans le cycle de construction d’un programme.

Laisser un commentaire