Spring boot - Maven
UP ASI
Bureau E204
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) – Spring Boot et Maven 1
Plan du Cours
– Définition Spring Boot
– Créer un projet Spring Boot
– Avantages Spring Boot
– Lancer un projet Spring Boot
– Définition Maven
– Installation Maven
– Gestion des dépendances
– Gestion des versions d’un projet
– Les commandes Maven
– Travail à faire
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) – Spring Boot et Maven 2
Définition Spring Boot
• Spring Boot est le projet principal du Spring Framework.
• Il simplifie le démarrage et le développement de nouvelles
applications Spring.
• Il diminue énormément le temps de développement et
augmente la productivité.
• Avec Spring Boot, les configurations de Spring sont diminuées.
• Il est très facile d’intégrer des applications Spring Boot avec ses
écosystèmes de Spring (Projets Spring) comme Spring MVC,
Spring Data, Spring Security etc…
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) – Spring Boot et Maven 3
Définition Spring Boot
• Spring Boot soutient des conteneurs embarqués (embedded
containers).
• Cela permet à des applications web de s’exécuter sans
déploiement sur un Web Server.
• Il suit l'approche “Configuration par défaut” afin de diminuer le
temps et l'effort de développement.
• Spring Boot favorise le travail avec les microservices.
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) – Spring Boot et Maven 4
Créer un projet Spring Boot
• File → New → Project
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) – Spring Boot et Maven 5
Créer un projet Spring Boot
• Spring Initializr (https://start.spring.io/)
(Vous devez avoir un accès à internet)
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) – Spring Boot et Maven 6
Créer un projet Spring Boot
Le nom du projet
L’emplacement du projet
Le langage du projet
Le gestionnaire de projet
GroupId: Identifiant unique du
groupe qui a créé le projet
(Exemple: tn.esprit)
ArtifactId: Nom unique utilisé
pour nommer l’artifacts (Livrables)
à construire
Package principal du projet
Le type de packaging du livrable
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) – Spring Boot et Maven 7
Créer un projet Spring Boot
La version du projet Spring Boot à utiliser
Il faut ajouter les dépendances
suivantes:
✓ Spring web
✓ Spring Data JPA
✓ Lombok
✓ MySql Driver
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) – Spring Boot et Maven 8
Créer un projet Spring Boot
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) – Spring Boot et Maven 9
Créer un projet Spring Boot - Arborescence
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) – Spring Boot et Maven 10
Avantages Spring Boot
• Spring Boot offre trois avantages incontournables :
▪ La gestion des configurations
▪ Le serveur est embarqué
▪ La gestion des dépendances
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) – Spring Boot et Maven 11
Avantages Spring Boot - Gestion des configurations
• Spring Boot facilite la gestion des configurations en centralisant les
configurations dans un seul fichier. Ainsi en se focalisant sur le métier au lieu de
la configuration, le développeur devient beaucoup plus productif.
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) – Spring Boot et Maven 12
Avantages Spring Boot - Gestion des configurations
• Le configuration standard du fichier « application.properties » :
### DATABASE ###
spring.datasource.url=jdbc:mysql://localhost:3306/springdb\
?createDatabaseIfNotExist=true\
&useUnicode=true\
&useJDBCCompliantTimezoneShift=true\
&useLegacyDatetimeCode=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=
### JPA / HIBERNATE ###
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) – Spring Boot et Maven 13
Avantages Spring Boot - Gestion des configurations
• Pour information, nous avons ajouté les paramètre suivants
&useUnicode=true\
&useJDBCCompliantTimezoneShift=true\
&useLegacyDatetimeCode=false&serverTimezone=UTC
dans le fichier application.properties pour éviter l’erreur suivante, lors de l’exécution :
java.sql.SQLException: The server time zone value 'Paris, Madrid' is
unrecognized or represents more than one time zone. You must configure
either the server or JDBC driver (via the serverTimezone configuration
property) to use a more specific timezone value if you want to utilize time
zone support.
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) – Spring Boot et Maven 14
Avantages Spring Boot – Serveur embarqué
• Spring Boot fournit des serveurs intégrés (Embedded HTTP servers) comme
Tomcat, Jetty .... afin de développer et de tester des applications web
facilement.
• En lançant le projet, le jar du Tomcat dézippe et se lance.
Clique droite sur le projet -> Open Module Settings -> Libraries
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) – Spring Boot et Maven 15
Avantages Spring Boot – Gestion des dépendances
• Spring Boot facilite la gestion des dépendances pour commencer un projet
Spring.
Avant Spring (Exp: JavaSE)
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) – Spring Boot et Maven 16
Avantages Spring Boot – Gestion des dépendances
Avec Spring Boot
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) – Spring Boot et Maven 17
Avantages Spring Boot – Gestion des dépendances
• Spring Boot facilite la gestion des dépendances grâce notamment à
l’utilisation des starters.
• Un starter va apporter à votre projet un ensemble de dépendances,
communément utilisées pour un type de projet donné.
• Les starters facilitent la gestion des versions. Plus besoin de chercher quelles
versions sont compatibles afin de les ajouter une à une dans le pom.xml.
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) – Spring Boot et Maven 18
Avantages Spring Boot
Spring Boot peut s'expliquer simplement par l'illustration ci-dessous:
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) – Spring Boot et Maven 19
Lancer un projet Spring Boot
• Comment démarrer un projet Spring Boot ?
✓ Vérifier la configuration du fichier « application.properties »
✓ Vérifier que le serveur base de données est fonctionnel.
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) – Spring Boot et Maven 20
Lancer un projet Spring Boot
• Si vous souhaitez modifier le numéro de port du serveur, ajoutez la variable suivante
dans le fichier « application.properties »: server.port= « numéro de port souhaité »
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) – Spring Boot et Maven 21
Définition Maven
Maven est un outil pour la gestion et l’automatisation de
construction des projets développé par la fondation Apache
permettant :
• 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( mvn site)
• Déploiement d'applications (mvn deploy)
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) – Spring Boot et Maven 22
Définition Maven
*Livrable: Résultat d’une production réelle pour faire le déploiement
On a 3 types de livrable :
✓ JAR: Java archive
✓ WAR: Web archive
✓ EAR: Enterprise archive ➔ JAR + WAR
→ La dépendance est un projet compressé en livrable afin
d’utiliser son code source pour implémenter des fonctionnalités
dans une application
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) – Spring Boot et Maven 23
Installation Maven
• 2 façons pour installer « Maven »:
- Maven entant que Plugin : Il est déjà installé par défaut
dans Eclipse/IntelliJ.
- Maven en standalone à travers l’invite de commandes
(non traité dans notre cours).
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) – Spring Boot et Maven 24
Installation Maven
• Comment savoir si Maven est bien installé, et quelle version nous utilisons
(Dans le cas où Maven est installé en tant que Plugin dans IntelliJ)?
File → Settings → Plugins
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) – Spring Boot et Maven 25
Gestion des dépendances – POM.XML
• POM (Project Model Object): Il s'agit d'un fichier XML qui contient des
informations sur le projet et des détails de configuration utilisés par Maven pour
construire le projet. Il contient une partie pour définir les dépendances utilisées
dans un projet.
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) – Spring Boot et Maven 26
Gestion des dépendances – POM.XML
• project: Balise racine de tous les fichiers pom.xml.
• modelVersion: Version de POM utilisée.
• groupId: Identifiant unique du groupe qui a créé le projet.
• artifactId: Nom unique utilisé pour nommer les artifacts (Livrables) à
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 / Structure de Projet.
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) – Spring Boot et Maven 27
Gestion des dépendances - Repository
• Les dépendances (Les bibliothèques) et les livrables se situent dans des
différents endroits nommés « Repository »
• C’est un répertoire dans lequel tous les fichiers JAR du projet, les fichiers JAR
de la bibliothèque, les plugins ou tout autre artefact spécifique au projet sont
stockés et peuvent être utilisés facilement par Maven.
• On a 3 types de repository:
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) – Spring Boot et Maven 28
Gestion des dépendances - Repository
• Repository Local:
C:/utilisateurs/<Nom de la machine>/.m2/Repository
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) – Spring Boot et Maven 29
Gestion des dépendances - Repository
• Repository Central: https://mvnrepository.com/
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) – Spring Boot et Maven 30
Gestion des dépendances
Central
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) – Spring Boot et Maven 31
Gestion des dépendances
• Après l’ajout d’une dépendance dans le fichier « application.properties »,
vous devez synchroniser le projet
– 1ère manière (Manuelle):
Clique droit sur le projet
→ Maven
→ Reload Project
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) – Spring Boot et Maven 32
Gestion des dépendances
– 2ère manière (Automatique):
File → Settings → Build, Execution, Deployment → Build Tools
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) – Spring Boot et Maven 33
Gestion des versions d’un projet
Exercice
Soit les versions du projet suivantes : 0.0.1
✓ 1.0.0
✓ 1.1.0
✓ 2.0.0
✓ 2.0.1
✓ 3.0.0
A quoi correspond chaque numérotation ?
✓ Release majeure Release mineure Patch (Correctif)
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) – Spring Boot et Maven 34
Les commandes Maven (Buts ou Goals)
• mvn compile: Créer les .class
• mvn test: Jouer les tests unitaires
• mvn package: Création 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.
• mvn site: Création du site web (Rapport sur l’application)
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) – Spring Boot et Maven 35
Les commandes Maven (Buts ou Goals)
• Pour lancer les différentes commandes maven
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) – Spring Boot et Maven 36
Les commandes Maven (Buts ou Goals)
• On peut faire une commande Maven Customisé en utilisant
Maven Goal : Cliquer sur le Symbole et taper la commande
voulue, exemple mvn clean package ou mvn clean install ou … :
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) – Spring Boot et Maven 37
Les commandes Maven (Buts ou Goals)
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) – Spring Boot et Maven 38
Les commandes Maven (Buts ou Goals)
• Emplacement du livrable :
{emplacement Repository local}/groupId/artifactId/version
➔ Réponse (pour la dépendance Log4J): ……………………………….…
• Nom du package (jar en général) :
{artifactId}-{version}.{package}
➔ Réponse (pour la dépendance Log4J): ……………………………….…
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.12</version>
</dependency>
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) – Spring Boot et Maven 39
Travail à faire
• Créer un projet « Spring Boot » avec les paramètres suivantes:
✓ Name: SpringBootFirstApp
✓ GroupId: tn.esprit.’_Votre classe’.’Votre nom et prénom’
✓ ArtifactId: SpringBootFirstAppArtifact
✓ Packaging: Jar
✓ Package name: tn.esprit.spring
✓ Spring boot version: Une version stable(2.7.4)
✓ Dependencies: Spring web, Spring Data JPA, Lombok et MySql Driver
• Créer les livrables avec les versions: 1.0 ,1.0.1, 2.0 et 2.2
• Déplacer le livrable vers le repository local (.m2)
• Exécuter la commande Maven pour vider le dossier « Target » après le
déplacement
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) – Spring Boot et Maven 40
SPRING BOOT-Maven
Si vous avez des questions, n’hésitez pas à nous
contacter :
Département Informatique
UP ASI
Bureau E204
© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) – Spring Boot et Maven 41