0% ont trouvé ce document utile (0 vote)
241 vues28 pages

2 - Maven

Ce document présente Maven comme outil de gestion et d'automatisation des projets Java. Il décrit les fonctionnalités de Maven, la structure standard d'un projet Maven, les balises du fichier pom.xml et les goals principaux comme compile, test, package, install. Le document présente également deux TP sur la création de projets Maven de type JAR et WAR.

Transféré par

maryem abdennabi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
241 vues28 pages

2 - Maven

Ce document présente Maven comme outil de gestion et d'automatisation des projets Java. Il décrit les fonctionnalités de Maven, la structure standard d'un projet Maven, les balises du fichier pom.xml et les goals principaux comme compile, test, package, install. Le document présente également deux TP sur la création de projets Maven de type JAR et WAR.

Transféré par

maryem abdennabi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

MAVEN

Bureau E204

© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) – MAVEN


PLAN DU COURS

– C’est Quoi Maven?


– Création d’un Projet Maven
– Balises du POM.XML
– Arborescence Standard
– Buts (Goals)
– TP : Projet avec Maven (JAR)
– TP : Projet Web Avec Maven (WAR)

© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) – MAVEN 2


C’EST QUOI MAVEN?

• Maven est un outil de construction de projets (build) open


source développé par la fondation Apache.

• Il permet de faciliter et d'automatiser certaines tâches de la


gestion d'un projet JavaEE.

© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) – MAVEN 3


FONCTIONNALITÉS

• Fonctionnalités
– Automatisation de tâches récurrentes
– Construction, Compilation des projets
– Gestion des dépendances
– Génération des livrables
– Génération de la documentation et de rapports
– Déploiement d'applications

• Modèle de projet basé sur des conventions (POM)


– Configuration basée sur le format XML

© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) – MAVEN 4


INSTALLATION DE MAVEN

• Maven entant que Plugin : Un plugin Maven est déjà


installé par défaut avec Eclipse.

• Maven en standalone (non traité dans notre cours).

© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) – MAVEN 5


EXERCICE

• Comment savoir si Maven est bien installé, et quelle version


nous utilisons (Dans le cas où Maven est installé en tant que
Plugin dans STS)?

© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) – MAVEN 6


EXERCICE

• En mode plugin :

© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) – MAVEN 7


Suite du Cours

• Créer un projet MAVEN simple via le plugin Maven

• Maitriser l’arborescence standard du code et de ses ressources

• Maîtriser les différents buts (Goals) du cycle de vie d’un projet


Maven (la compilation, le test, le packaging d’une application,
…)

• Installer une application dans un Repository local

• Gérer les dépendances (bibliothèques) d’un projet donné

• Exécuter les tests unitaires automatiquement

© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) – MAVEN 8


CRÉATION D’UN PROJET MAVEN

© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) – MAVEN 9


BALISES DU POM.XML

• pom.xml : Project Model Object


• project : Balise racine de tous les fichiers pom.xml.
• modelVersion : Version de POM utilisée.
• groupId : Identifier un groupe qui a créé le projet. Ex: org.apache.
• artifactId : Nom unique utilisé pour nommer l’artifacts à construire.
• packaging : Type de packaging du projet ( ex. : JAR, WAR, EAR...).
• version : Version de l'artifact généré par le projet.
• name : Nom du projet.
• description : Description du projet.
• dependencies : balise permettant de gérer les dépendances.
• archetype : Template de Projet.

© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) – MAVEN 10


ARBORESCENCE STANDARD

© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) – MAVEN 11


PREMIÈRES COMMANDES

• Assurez vous que vous accès à Internet, Puis lancer les commandes suivantes
clean / install avec JBoss Dev Studio :

• Ceci va mettre à jour votre Repository local avec l’ensemble des plugin et
dépendances nécessaires pour que le bon fonctionnement de Maven.

• Partager votre Repository avec vos collègues qui n’ont pas accès à internet.
© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) – MAVEN 12
ARBORESCENCE STANDARD

• pom.xml : le fichier de configuration du projet


• /src : code source et fichiers source principaux
• /src/main/java : code source java
• /src/main/resources : fichiers de ressources (images, fichiers
config...)
• /src/main/webapp : webapp du projet
• /src/test : fichiers de test
• /src/test/java : code source Java de test
• /src/test/resources : fichiers de ressources de test
• /target : fichiers résultat, les binaires (du code et des tests), les
packages générés et les résultats des tests

© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) – MAVEN 13


BUTS (GOALS)

• mvn compile : Créer les .class

• mvn test : Jouer les tests unitaires

• mvn package : Creation du livrable dans target.

• mvn install : Copie du livrable dans le Repository local :


~\.m2\repository\...

• mvn deploy : Copie du livrable sur le repository distant

• mvn clean : Supprime le contenu du dossier target.


© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) – MAVEN 14
BUTS (GOALS)

• Emplacement du livrable :
{emplacement Repository}/groupId/artifactId/version

• Nom du package (jar en général) : {artifactId}-{version}.{package}

<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>

© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) – MAVEN 15


Dépôts (Repository) Maven

• Dépôt Local : .m2

• Dépôt Distant : propre à une entreprise donnée (Nexus)

• Dépôt Central : https://mvnrepository.com

© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) – MAVEN 16


TP1 – Projet avec Maven (JAR)

• Créer un Projet Maven :


• Simple : sans archetype, type Jar, groupId : tn.esprit
• artefactId / nom / description : avec-maven
• package : tn.esprit
• Mettre à jour le pom.xml pour utiliser Java 1.8
• Créer le package : tn.esprit
• Créer la Classe : CallRestWebService (Voir Code Source pages
suivantes).
• Ajouter dans le pom.xml les dépendances JSON et HTTPCLIENT (voir
dépendances pages suivantes).
• Créer le livrable avec Maven
• Exécuter la méthode main.

© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) – MAVEN 17


TP1 – Projet avec Maven (JAR)
package tn.esprit;
import java.io.IOException;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.json.JSONObject;

/** @author Walid-YAICH */

public class CallRestWebService {


public static final String endpoint = "https://httpbin.org/get";
public static void main(String[] args) {
HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet(endpoint);
String ip = "not found";

© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) – MAVEN 18


TP1 – Projet avec Maven (JAR)
try {
HttpResponse response = client.execute(request);
String jsonResponse = EntityUtils.toString(response.getEntity());
System.out.println("Response as String : " + jsonResponse);
JSONObject responseObj = new JSONObject(jsonResponse);

ip = responseObj.getString("origin");
System.out.println("ip : " + ip);

} catch (IOException e) { e.printStackTrace(); }


}
}

© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) – MAVEN 19


TP1 – Projet avec Maven (JAR)
<project …>

<properties>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.source>1.8</maven.compiler.source>
<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
</properties>

<dependencies>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20160810</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.1.1</version>
</dependency>
</dependencies>
</project> © 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) – MAVEN 20
TP2 – Projet Web avec Maven (WAR)

• Créer un nouveau projet de type Maven, simple (sans archetype)


• Projet de type WAR

© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) – MAVEN 21


TP2 – Projet Web avec Maven (WAR)

• Corriger l’erreur et le warning ci-dessous :

© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) – MAVEN 22


TP2 – Projet Web avec Maven (WAR)

• Correction de l’erreur « web.xml missing », tout projet web doit contenir


un fichier web.xml, cliquer sur « Generate … » pour le générer :

© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) – MAVEN 23


TP2 – Projet Web avec Maven (WAR)

• Correction du warning « Java 1.5 », Pointer sur Java 8 :


• Ajouter dans pom.xml les propriétés suivantes :

<properties>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.source>1.8</maven.compiler.source>
</properties>

• Puis, Faites un Maven Update.

© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) – MAVEN 24


TP2 – Projet Web avec Maven (WAR)

• Faites un Maven Update.

© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) – MAVEN 25


TP2 – Projet Web avec Maven (WAR)

• Ajouter une page web basique index.html :

© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) – MAVEN 26


TP2 – Projet Web avec Maven (WAR)

• Déployer l’application sur Tomcat, et lancer l’URL :


http://localhost:8080/maven-web

© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) – MAVEN 27


MAVEN

Si vous avez des questions, n’hésitez pas à nous


contacter :

Département Informatique
UP ASI
(Architectures des Systèmes d’Information)

Bureau E204

© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) – MAVEN

Vous aimerez peut-être aussi