Tutoriel Maven N°4 : gestion de dépendances

////Tutoriel Maven N°4 : gestion de dépendances

Avec Objis, spécialiste formation MAVEN (3j) et formation intégration continue (5j),
, maîtrisez la gestion des dépendances avec MAVEN. Confiez à MAVEN la recherche des jars nécessaire à votre projet. déclarez vos dépendances dans la section ‘dependencies’ du fichier pom.xml . Optimisez la déclaration des dépendances inter-modules en utilisant l’héritage ainsi que la balise ‘dependencyManagement’. Comprenez enfin le plugin maven ‘dependency’

Ce tutoriel est un extrait de séances pratiques de la formation MAVEN dispensée par Objis.

Liens utiles

Tutoriaux et formation MAVEN

Page officielle sur les dépendances MAVEN

Prérequis, outils et versions

Tutoriel Maven N°1 : Installation Maven

Objectifs

Comprendre la gestion dépendances d’un projet multi-modules

Comprendre les déclaration de dépendances

Comprendre le plugin ‘dependency’

Programme

contexte

Partie 1 : dépendances couche Domaine, Dao et service

Partie 2 : déploiement de l’appli avec Jetty

Partie 3 : identifier les dépendances avec le plugin ‘dependency’

Partie 4 : optimisations

Partie 5 : versions des dependances

Durée

30min

PUBLICITE : votre formation ‘Intégration continue’ avec Objis

formation-integration-continue-usine-logicielle-objis-maillons

Contexte

Vous souhaitez déléguer à Maven la gestion des dépendances de votre projet multi-modules ‘monappli’ impliquant 4 modules :

monappli-dao

monappli-service

monappli-domaine

monappli-web

Dans ce Tutoriel , vous allez :

1) Mettre en oeuvre des dépendances entre modules d’un projet multimodules,

2) Déployer dans un serveur d’application à partir de Maven.

2) puis vous allez mettre en oeuvre une stratégie permettant lors du packaging du WAR d’embarquer les Jar du domaine, service et dao dans le Web-INFlib du WAR.

3) Apprendre un technique d’optimisation du pom.xml

Partie 1 : dépendances couches Domaine, DAO et Service

Dépendances couche Dao

Spécifiez que la couche DAO dépend de la couche Domaine (version 1.0-SNAPSHOT)

Configurez le projet monappli-dao de façon à utiliser hibernate Core 4.2 pour notre couche d’accès aux données.

Dépendances couche Service

Spécifiez que la couche Service dépend de la couche Dao (version 1.0-SNAPSHOT)

Dépendances couche web

Spécifiez que la couche Web dépend de la couche Service et de la couche Domaine (version 1.0-SNAPSHOT)

Packagez ensuite le livrable web

Expliquez le contenu du livrable. En particulier analysez le contenu du dossier WEB-INF\lib. Constatez que les 3 dépendances s’y trouvent

Partie 2 : déploiement de l’appli avec Jetty

Mettez en oeuvre pour le projet web le plugin Jetty à partir de la documentation du plugin (ch. Configuring HowTo et Running):

REMARQUE 1 : Tous les plugins ayant comme groupId org.apache.maven.plugins (ceux du projet maven) sont reconnus automatiquent car maven ajoute ce groupId par défaut quand il n’est pas spécifié. Expliquez d’où vient ce comportement.

REMARQUE 2 : Pour les autres projet, maven ne peux deviner leur groupId (org.mortbay.jetty pour le plugin maven-jetty-plugin). Mais on peux quand même le lancer depuis la ligne de commande sans l’ajouter au pom comme ceci:
mvn org.mortbay.jetty:maven-jetty-plugin:run

Ainsi , déclarer le plugin dans le pom, permet de simplifier la commande.
Après installation du plugin lancez la commande : mvn jetty:run

Que se passe t’il ? Essayez de vous connecter sur http://localhost:8080

FACULTATIF : en utilisant la documentation du plugin Tomcat 7, déployez dans Tomcat sur le port 8082.

Partie 3 : identification des dépendances

Nous allons utiliser le plugin ‘dependency’ pour connaître les dépendances de notre projet

Que produisent les commandes suivantes sur le module web :

— mvn dependency:analyze (Analyse dépendances : utilisé, non utilisé, déclaré, non déclaré)

Expliquez

mvn dependency:resolve (lister toutes les dépendances)

mvn dependency:tree (arbre des dépendances)

Expliquez

AVOUS DE JOUER : que produisent les commandes suivantes sur le module web :

mvn dependency:resolve-plugins (lister les dépendances de plugin)

mvn dependency:tree -X (arbre des dépendances, mode debug)

Partie 4 : optimisations

Optimisation N°1 : dépendances module ‘enfant’ monappli-web

Le mécanisme d’héritage Maven permet d’écrire cette configuration :

tutoriel-maven-dependences-4

Expliquez.

pom

Qu’est ce qu’une propriété maven ? Comment créer une propriété maven pour votre projet ? quelle utilité ?

Qu’est ce qu’une proriété implicite ?

Citez 5 autres variables implicites.

Optimisation N°2 : dependencyManagement

INFO : Si le projet ‘monappli-parent’ utilise pour définir une dépendance à junit:junit:4.4 , alors les POMs héritant du parent peuvent définir leur dépendance en fournissant uniquement groupId=junit et artifactId=junit (pas la version). Maven trouvera remplir la version en utilisant la version du parent.

— Bénéfice 1 : les détails de dépendance peuvent être centralisé dans un endroit qui sera propagé dans les POMs hérités.

— Bénéfice 2 : la version et le scope des artifacts impliqués dans les dépendances transitives peuvent aussi être controlés en les spécifiant dans la section

Expliquez la configuration suivante du pom parent

tutoriel-maven-dependences-5

Analysez l’impact sur le pom du module web

tutoriel-maven-dependences-6

Expliquez

Elements optimisation]]

monappli-optimise

 

Partie 5 : versions des dépendances

Le plugin versions-maven-plugin est également utile pour travailler avec les versions de vos dépendances :

Que produisent les commandes suivantes :

mvn versions:display-dependency-updates (Liste toutes les dépendances ayant une version plus récente)

mvn versions:display-plugin-updates (Liste tous les plugins ayant une version plus récente

mvn versions:update-child-modules (changer d’abord la version du pom parent. En appelant ensuite ce goal sur le pom parent, il mettra à jour les versions dans enfants. pratique pour faire changements de versions)

mvn versions:set – Comme update-child-modules mais permettant de spécifier la nouvelle version en ligne de commande (-DnewVersion=VALUE) au lieu de changer le pom parent.

Conclusion

Dans ce tutoriel, vous avez mis en œuvre dépendances Maven.

PUBLICITE : votre formation ‘Intégration continue’ avec Objis

formation-integration-continue-usine-logicielle-objis-maillons

2018-11-06T08:03:49+01:00

Contactez nous

241 rue DUGUESCLIN, 69003 Lyon

Web : Objis : spécialiste formation Java