C306 Compilation Assistée Avec Maven

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 5

C306: Compilation assistée avec Maven https://pedag.u-picardie.fr/moodle/upjv/mod/page/view.php?

id=41415

C306 - Ingénierie du logiciel (ISI_05)


Accueil / Mes cours / FOAD / E-Miage / MASTER 1 MIAGE A DISTANCE [M1MIAA211] - 2021 / C306 - Ingénierie du logiciel (ISI_05)

/ Cours / Compilation assistée avec Maven

Compilation assistée avec Maven

1 - Principe
Pour simplifier la gestion des dépendances et l'exécution des différents tâches (compilation, exécution des tests, instrumentation, ...) il existe
des outils tels que Maven, Gradle, ...

Ce qui évite toutes les tâches fastidieuses faites dans les parties précédentes (récupération des outils, écriture des commandes) mais qui
étaient utile pour bien comprendre ce qui se passe.

2 - Mise en oeuvre de Maven


Sans vouloir rentrer dans les détails, Maven est un logiciel conçu pour gérer facilement la production de projets logiciels Java.

Site officiel http://maven.apache.org/ http://fr.wikipedia.org/wiki/Apache_Maven

Maven est écrit en Java et utilise la variable d'environnement JAVA_HOME pour


savoir quel JDK utiliser pour ses différentes tâches. Vérifier bien la présence de
cette variable d'envrionnement, ajoutez là le cas échéant.

Maven utilise un fichier xml (pom.xml) pour décrire le projet et où sont indiquées les différentes tâches à réaliser. Ce fichier doit être à la
racine de l'arborescence du projet

Exemple d'arborescence standard de projet avec un fichier Maven:

./pom.xml ?
./src
./src/test
./src/test/java
./src/test/java/MathToolsTests.java
./src/main
./src/main/java
./src/main/java/RandomTab.java
./src/main/java/MathTools.java

Archive contenant l'exemple utilisé: myproject.zip


contenu du fichier "pom.xml":

1 sur 5 30/05/2022, 18:02


C306: Compilation assistée avec Maven https://pedag.u-picardie.fr/moodle/upjv/mod/page/view.php?id=41415

1 <!--?xml version="1.0" encoding="UTF-8"?-->


2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemalocation
3 <modelversion>4.0.0</modelversion>
4
5 <name>MyProject</name>
6 <description>Mon nouveau projet</description>
7 <version>1.1</version>
8 <groupid>default</groupid>
9 <artifactid>my-project</artifactid>
10
11 <dependencies><!-- dependendance du projet -->
12 <dependency><!-- bibliotheque junit -->
13 <groupid>org.junit.jupiter</groupid>
14 <artifactid>junit-jupiter-engine</artifactid>
15 <version>5.4.2</version>
16 <scope>test</scope>
17 </dependency>
18 </dependencies>
19
20 <build>
21 <plugins><!-- lister les plugins et leur version permet d'eviter que maven prenne celui qui trouvera par defaut -->
22
23 <plugin><!-- pour compiler -->
24 <groupid>org.apache.maven.plugins</groupid>
25 <artifactid>maven-compiler-plugin</artifactid>
26 <version>3.8.1</version>
27 </plugin>
28
29 <plugin>
30 <artifactid>maven-project-info-reports-plugin</artifactid>
31 <version>3.0.0</version>
32 </plugin>
33
34 <plugin><!-- pour l'execution des tests -->
35 <groupid>org.apache.maven.plugins</groupid>
36 <artifactid>maven-surefire-plugin</artifactid>
37 <version>3.0.0-M3</version>
38 <configuration><!-- pour continuer même s'il y a des tests en erreur-->
39 <testfailureignore>true</testfailureignore>
40 </configuration>
41 </plugin>
42
43 <plugin><!-- pour la generation de rapports -->
44 <groupid>org.apache.maven.plugins</groupid>
45 <artifactid>maven-site-plugin</artifactid>
46 <version>3.7.1</version>
47 <configuration>
48 <locales>fr,en</locales><!-- en francais par defaut -->
49 </configuration>
50 </plugin>
51
52 <plugin><!-- pour la couverture de code avec JaCoco lors de l'exécution des tests JUnit -->
53 <groupid>org.jacoco</groupid>
54 <artifactid>jacoco-maven-plugin</artifactid>
55 <version>0.8.4</version>
56 <executions>
57 <execution>
58 <goals>
59 <goal>prepare-agent</goal>
60 </goals>
61 </execution>
62 <execution>
63 <id>report</id>
64 <phase>prepare-package</phase>
65 <goals>
66 <goal>report</goal>
67 </goals>
68 </execution>
69 </executions>
70 </plugin>
71
72
73 <plugin><!-- pour l'analyse avec checkstyle -->
74 <groupid>org.apache.maven.plugins</groupid>
75 <artifactid>maven-checkstyle-plugin</artifactid>
76 <version>3.0.0</version>
77 </plugin>
78
79 </plugins>
80 </build>
81
82 <reporting><!-- on indique ici les rapports qu'on veut obtenir lors de la phase de generation de rapports -->
83 <plugins>
84 <plugin>
85 <groupid>org.jacoco</groupid>
86 <artifactid>jacoco-maven-plugin</artifactid>
87 <reportsets>
88 <reportset>
89 <reports>
90 <report>report</report>
91 </reports>
92 </reportset>
93 </reportsets>
94 </plugin>
95

2 sur 5 30/05/2022, 18:02


C306: Compilation assistée avec Maven https://pedag.u-picardie.fr/moodle/upjv/mod/page/view.php?id=41415

96
97 <plugin><!-- pour avoir le rapport checkstyle -->
98 <groupid>org.apache.maven.plugins</groupid>
99 <artifactid>maven-checkstyle-plugin</artifactid>
100 <version>3.0.0</version>
101 <reportsets>
102 <reportset>
103 <reports>
104 <report>checkstyle</report>
105 </reports>
106 </reportset>
107 </reportsets>
108 </plugin>
109
110 <plugin><!-- pour avoir le lien au code source dans les rapports -->
111 <groupid>org.apache.maven.plugins</groupid>
112 <artifactid>maven-jxr-plugin</artifactid>
113 <version>2.3</version>
114 </plugin>
115
116 <plugin><!-- pour la verification du code avec PMD -->
117 <groupid>org.apache.maven.plugins</groupid>
118 <artifactid>maven-pmd-plugin</artifactid>
119 <version>3.12.0</version>
120 </plugin>
121
122 <plugin><!-- pour avoir le rapport surfire (execution des tests) -->
123 <groupid>org.apache.maven.plugins</groupid>
124 <artifactid>maven-surefire-report-plugin</artifactid>
125 <version>3.0.0-M3</version>
126 </plugin>
127
128 </plugins>
129 </reporting>
130
131 <properties>
132 <!-- encodage du code source -->
133 <project.build.sourceencoding>UTF-8</project.build.sourceencoding>
134 </properties>
135
136 </project>

Vous pouvez utiliser ce fichier pour gérer vos projets/devoirs/exercices, il devrait convenir tel quel (adapter la première partie décrivant le nom
du projet, la version, ...)

L'utilisation est très simple et a le très gros avantage de gérer automatiquement les dépendances :
• pour compiler:

> mvn compile ?

...
INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.786s
[INFO] Finished at: Wed Jul 03 11:47:44 CEST 2013
[INFO] Final Memory: 8M/109M

• tout ce qui est généré par maven est mis dans le dossier "target"
• pour compiler les tests:

> mvn test-compile ?

• pour exécuter les tests:

> mvn test ?

• pour faire le ménage (supprime le dossier 'target'):

> mvn clean ?

• pour générer les rapports :

> mvn site:site ?

• pour générer le rapport sonarqube en communiquant avec votre serveur sonar installé avec les paramètres par défaut:

>mvn sonar:sonar ?

(si vous voulez utiliser sonarqube)


• pour tout faire d'un coup :

> mvn clean compile test site:site ?

3 sur 5 30/05/2022, 18:02


C306: Compilation assistée avec Maven https://pedag.u-picardie.fr/moodle/upjv/mod/page/view.php?id=41415

Archive contenant l'exemple utilisé: myproject.zip

5 - Exercice
Corriger le projet ci-dessus pour que
• les tests unitaires passent
• la couverture de code soit complète
• il n'y ai plus d'erreurs signalées par checkstyle
• il n'y ai plus d'erreurs signalées par PMD

6 - Conclusion
On a ici grandement facilité la gestion des dépendances et l'exécution des différentes tâches (compilation, tests, génération des rapports). Les
seuls fichiers utile sont ceux de l'arborescence décrite, rien qui ne serait constructible ou récupérable automatiquement.

Modifié le: vendredi 12 juillet 2019, 19:11

◄ Optimisation des performances du code

Aller à…

Utilisation de Git - TP ►

Connecté sous le nom « SODO KANGNI KOMLAN » (Déconnexion)


C306
Mes cours
ı Événements
ı Aide
ı
Accompagnement enseignants
ı Etudiants Maîtrisez votre environnement numérique
ı Enseignants Préparez vos examens à distance
ı Learning Hub
ı Bac à sable
ı Moodle Epione

4 sur 5 30/05/2022, 18:02


C306: Compilation assistée avec Maven https://pedag.u-picardie.fr/moodle/upjv/mod/page/view.php?id=41415

ı Français (fr)
ı
English (en)
ı Français (fr)
Résumé de conservation de données
Obtenir l'app mobile

UNIVERSITÉ PICARDIE JULES VERNE ı Contact ı Charte informatique ı CGU

5 sur 5 30/05/2022, 18:02

Vous aimerez peut-être aussi