Qu'est-ce que Maven ?
Maven est essentiellement un outil de gestion et de compréhension de projet.
Maven offre des fonctionnalités de :
construction , compilation ;
documentation ;
rapport ;
gestion des dépendances ;
gestion des sources ;
mise à jour de projet ;
déploiement.
Qu'est-ce que le POM ?
Le POM (Project Object Model) est une façon de décrire, de manière déclarative, un projet au sens de Maven. Cette description est contenue dans le fichier pom.xml présent dans le repertoire de base du projet. Le fichier pom.xml contient donc tous les éléments permettant de gérer le cycle de vie du projet.
project : c'est la balise racine de tous les fichiers pom.xml.
- modelVersion : cette balise indique la version de POM utilisée. Bien que cette version ne change pas fréquemment, elle est obligatoire afin de garantir la stabilité d'utilisation.
- groupId : cette balise permet d'identifier un groupe qui a créé le projet. Cette clé permet d'organiser et de retrouver plus facilement et rapidement le projet.
- artifactId : cette balise indique un nom unique utilisé pour nommer les artifacts à construire.
packaging : type de packaging du projet ( ex. : JAR, WAR, EAR, etc.).
- version : version de l'artifact généré par le projet.
- name : nom du projet.
- url : adresse du site du projet.
- description : description du projet.
- dependencies : balise permettant de gérer les dépendances.
Qu'est-ce qu'un archetype ?
Un archetype est un template de projet. Le fait d'utiliser des archetypes pour initialiser un projet permet de gagner du temps et de respecter une certaine convention.
Qu'est-ce qu'une dépendance ?
Une dépendance est une référence vers un artefact spécifique contenu dans un repository (dépôt). Cet artefact est nécessaire pour une ou plusieurs phases du cycle de vie du projet.
L'exemple le plus simple est une dépendance sur une bibliothèque jar qui permet d'en utiliser le contenu dans le projet.
Qu'est-ce qu'un artefact ?
Dans Maven, un artefact est un élément spécifique issu de la construction du logiciel.
Dans Java, les artefacts les plus communs sont des JARs, mais ce peut être aussi un fichier WAR, un EAR, un ZIP, etc.
Qu'est-ce que le groupId/artifactId ?
Le groupId est l'identifiant du groupe, à l'origine du projet. GroupId suit les mêmes règles de nommage que les packages Java (exemple : fr.masociete.monprojet), et on choisit généralement comme groupId le nom du top package du projet.
L'artifactId est l'identifiant du projet au sein de ce groupe.
L'artifactId est utilisé par défaut pour construire le nom de l'artefact final (exemple : pour un artifactId=monprojet, le nom du fichier jar généré sera monprojet-version.jar).
Qu'est-ce qu'un SNAPSHOT ?
Par convention, une version en cours de développement d'un projet voit son numéro de version suivi d'un -SNAPSHOT.
Ainsi un projet en version 2.0-SNAPSHOT signifie que cette version est une pré-version de la version 2.0, en cours de développement.
Ce concept de SNAPSHOT est particulièrement important pour Maven. En effet, dans la gestion des dépendances, Maven va chercher à mettre à jour les versions SNAPSHOT régulièrement pour prendre en compte les derniers développements.
Utiliser une version SNAPSHOT permet de bénéficier des dernières fonctionnalités d'un projet, mais en contrepartie, cette version peut être (et est) appelée à être modifiée de façon importante, sans aucun préavis.
Qu'est-ce que le repository local, distant ?
Un repository local est un répertoire sur le poste du développeur permettant de stocker, suivant la même arborescence, tous les artefacts téléchargés depuis le(s) repository distant(s)