Vous êtes sur la page 1sur 22

Introduction lutilisation de Maven

Prof. R. EZZAHIR Dep. Informatique ENSA Agadir University Ibn Zohr

Rfrence web

http://maven.apache.org https://tech.lds.org/wiki/Introduction_to_Maven# L ab_1_Learning_Resources https://tech.lds.org/wiki/Introduction_to_Maven# L ab_2_Create_a_Maven_Project

http://www.sonatype.com/resource-center.html

Prsentation

Maven est un outil de gestion de projet logiciel. Bas sur un modle de projet objet (POM = Project Object Model) Il permet notamment :
d'automatiser certaines tches : compilation, tests unitaires et dploiement des applications qui composent le projet de grer des dpendances vis vis des bibliothques ncessaires au projet de gnrer des documentations concernant le projet

Cest quoi POM


Stands pour Project Object Model Dcrit un projet


Nom et Version Type d'artefact Locations de code source Dpendances Plugins Profils (Alterner les configurations de construction)

Utilise XML par dfaut


diffrent de la faon dont Ant utilise XML

Nom et version (GAV)

Maven identifie de manire unique un projet en utilisant:


groupID: identifiant de groupe de projet arbitraire (sans espaces ni virgules).
Habituellement vaguement bas sur le paquet Java

GAV

artifactId: nom arbitraire de projet (sans espaces ni virgules) Version: Version de projet
Format {Major}.{Minor}.{Maintanence} Ajouter -SNAPSHOT pour identifier en cours de dveloppement Syntaxe GAV : groupId: artifactId: version
POM version <?xml version="1.0" encoding="UTF-8"?> <project> <modelVersion>4.0.0</modelVersion> <groupId>ENSA4GInfo</groupId> <artifactId>ProjetTuto3</artifactId> <version>1.0-SNAPSHOT</version> </project>

Version de notre projet

Emballage (Packaging)

Crer un type spcifique en utilisant l'lment Packaging Permet Maven de savoir comment construire le projet Exemple de types d'emballage:
pom, jar, war, ear, custom jar par dfaut

<?xml version="1.0" encoding="UTF-8"?> <project> <modelVersion>4.0.0</modelVersion> <groupId>ENSA4GInfo</groupId> <artifactId>ProjetTuto3</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> </project>

Pour dire maven de crer un jar

Hritage de projet

Les fichiers pom peuvent hriter de la configuration


groupId, la version Configuration du projet Dpendances La configuration du plugin Etc

<?xml version="1.0" encoding="UTF-8"?> <project> <parent> <groupId>ENSA4GInfo</groupId> <artifactId>Projets</artifactId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>ProjetTuto3</artifactId> <packaging>jar</packaging> </project>

Les projets multimulti-modules


Maven est un support pour les projets multi-modules Pour chaque projet, maven cre un artefact primaire Un pom parent est utilis pour regrouper les modules

Exemple Plusieurs quipes de dveloppements France, Sude, Maroc, Brsil, Italie, USA Chef de projets bas en France Besoin de suivi avancement travaux (Quantit + qualit) Architecture en couche Technologies : Struts, Spring, Hibernate

Regrouper un projet multimulti-modules

Cycle de vie

La construction dun projet par Maven suit un cycle de vie Le cycle de vie par dfaut:
generate-sources/generate-resources compile test package integration-test (pre and post) Install deploy

Il y a aussi un cycle de vie clean

Commandes maven
Pour appeler la construction Maven il faut dfinir un cycle de vie objectif mvn install

Invokes generate* and compile, test, package, integration-test, install


mvn clean
Invokes just clean

mvn clean compile


Clean old builds and execute generate*, compile

mvn compile install


Invokes generate*, compile, test, integration-test, package, install

mvn test clean


Invokes generate*, compile, test then cleans

Installation

Pour tlcharger Maven, rendez-vous cette adresse : http://maven.apache.org/download.html

Tlcharger maven 3

Installation

Dcompressez le fichier zip dans le rpertoire: C:\Program Files Apache Software Foundation Lirez le fichier README Ajouter la variable denvironnement path PATH=C:\Program Files Apache Software Foundation \apache-maven3.0.x\bin";%PATH% Tester lintallation en tapant la commande : mvn -version

http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html

Crer un projet par maven


Ouvrir cmd >> mkdir mvn-test >> mvn archetype:generate -DgroupId=com.ensa4info.app DartifactId=my-app -DarchetypeArtifactId=maven-archetypequickstart -DinteractiveMode=false >> tree /f /a
Vous avez excut lobjectif Maven archetype: generate en passant diffrents paramtres cet objectif. Le prfixe archetype est le plugin qui contient le but ici generate .

Ouvrir pom.xml

Crer un projet par maven (suite)


Tapez la commande: mvn package La ligne de commande permet d'imprimer diffrentes actions, et se terminent par ce qui suit:

Cycle de vie encore

Contrairement la premire commande excute (archetype:generate), vous remarquerez peut-tre la seconde est tout simplement un seul mot (-package). Plutt qu'un objectif, c'est une phase. Une phase est une tape dans le cycle de vie de construction, qui est une squence ordonne de phases. Lorsqu'une phase est donne, Maven excute toutes les tapes de la squence jusqu' (et y compris) celle qui est dfinie. Par exemple, si nous excutons la phase de compilation, les phases qui sont effectivement excutes sont: validate generate-sources process-sources generate-resources process-resources compile Vous pouvez tester maintenant le jar compil et emball avec la commande suivante: java -cp target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.App

L'excution des outils Maven


Les phases du cycle de vie par dfaut les plus souvent excutes sont: validate: valider si le projet est correcte et toutes les informations ncessaires sont disponibles compile: compiler le code source du projet. Test: tester le code source compil en utilisant un framework de test unitaire approprie. Ces tests ne devraient pas exiger le code soit emball ou dploy. package: prendre le code compil et emballez-le dans un format distribuable comme un JAR. integration-test: procder et dployer le package si ncessaire dans un environnement o les tests d'intgration peuvent tre excuts. verify : excuter des contrles pour vrifier si le paquet est valide et conforme aux critres de qualit. install: installer le package dans le rfrentiel local, pour une utilisation en tant que dpendance d'autres projets au niveau local deploy: fait dans un environnement d'intgration ou de sparation, copier le paquet final vers le dpt distant pour le partager avec d'autres dveloppeurs et des projets.

L'excution des outils Maven (suite)

Il y a deux autres cycles de vie Maven en plus de celle de la liste par dfaut ci-dessus. ils sont clean: nettoie les artefacts crs par les versions antrieures site: gnre la documentation du site pour ce projet

Les phases sont effectivement mises en correspondance avec les objectifs sous-jacents. Les objectifs spcifiques excuts par phase dpend du type de conditionnement du projet. Par exemple, le paquet excute jar: jar si le type de projet est un fichier JAR, et war: war est le type de projet ( si vous volez quil soit un war)

Une chose intressante noter est que les phases et les objectifs peuvent tre excutes dans l'ordre.

Le projet cible
>> mvn clean dependency:copy-dependencies package Cette commande permet de nettoyer le projet, copie dpendances, et le paquet du projet (excution de toutes les phases jusqu' forfait, bien sr).

Site de documentation
>> mvn site Cette phase gnre un site bas sur l'information contenu dans POM du projet. Vous pouvez regarder la documentation gnre sous la cible / site.

Site de notre projet my my-app

La prsentation suivante sera sur le plugin m2e maven to eclipse

Vos questions et remarques sont les bienvenus red.ezzahir@gmai.com