Maven Flashcards
A quoi sert un POM parent ?
Il permet de centraliser certaines informations (propriétés, repository, …) dont ses enfants hériteront
A quoi servent <dependencymanagement></dependencymanagement> et <pluginmanagement></pluginmanagement> ?
A fixer dans un projet parent les versions qui seront à la disposition des modules. Cela ne force pas les sous-projets à les inclure pour autant.
Comment définir et utiliser des propriétés ?
- Définition: <properties></properties>
- Utilisation: ${some.property}
A quoi sert un profil ?
A exécuter de manière conditionnelle certaines parties du build d’un projet
Comment activer un profil ?
- En ligne de commande: -Pprofile_name
- Sur une condition: propriété, os, fichier, …: au moyen de <activation></activation>
Comment définir un projet multi-modules ?
- Dans les sous-projets, définir le projet parent
- Dans l’aggrégateur, définir les modules au moyen de <modules></modules>
Quelle est le but du Reactor ?
Déterminer les dépendances entre les modules pour déduire l’ordre du build
Quelle est la différence entre la recherche d’une dépendance SNAPSHOT et d’une dépendance RELEASE ?
- Une version RELEASE est supposée être stable. Si Maven trouve dans le repository local il s’en contente, sinon il va chercher dans le repository des releases
- Une version SNAPSHOT est supposée sujette à modification. Même si Maven en trouve une version dans le repository local, si elle est trop ancienne il va en chercher une version plus récente dans le repository des snapshots.
Comment les dépendances SNAPSHOT sont-elles stockées dans le nexus ?
Le suffixe SNAPSHOT disparait et est remplacé par le timestamp correspondant au déploiement de l’artifact.
Quelles sont les différentes politiques de mise à jour des snapshots ?
- daily (défaut): la recherche de mise à jour se fait sur le premier build de la journée
- interval: intervalle en minutes. Le timestamp de l’artifact local est comparé au timestamp du repository distant.
- always
- never
Décrire ce que fait release:prepare
- Vérifier qu”il n’y a pas de modifications locales
- Vérifier qu’il n’y a pas de dépendence SNAPSHOT
- Modifier les versions dans les POMs de SNAPSHOT vers RELEASE
- Modifier l’information SCM dans le POM pour inclure le tag
- Exécuter les tests
- Commiter les POMs modifiés
- Créer le tag dans le SCM
- Bumper la version pour passer au SNAPSHOT et commiter
Décrire ce que fait release:perform
- Extraire et builder la version taggée par prepare
- Déployer les artefacts dans les repositories locaux et distants