Construction Automatisée Flashcards
Outils de construction automatisée
* L’environnement de développement n’est pas toujours
exactement le même que l’environnement de tests, préproduction, de production, etc.
- Des manipulations sont nécessaire selon
l‘environnement. - Toutes ces manipulations peuvent être faites
manuellement. - C’est un travail manuel répétitif et sujet aux erreurs et aux
oublis. - Certains outils nous permettent d’automatiser toutes les
manipulations qui touche la construction de l’application. 3
Outils de construction automatisée
Manipulations possibles
- Génération de code
- Vérification du style
- Compilation
- Édition des liens (link)
- Génération du bytecode (Java)
- Compilation et génération de la documentation
- Création des librairies (jar, dll)
- Création de répertoires, copie de fichiers
- Modifier les permissions de fichiers et répertoires
- Exécution des tests
Outils de construction automatisée
* Etapes principales
- Création d’un répertoire vide
- Construction de l’application
à partir des sources - Production des livrables
Outils de construction automatisée
* Etapes détaillées
- Récupération du code du gestionnaire de sources (checkout) * Git, SVN, etc.
- Construction du projet
- Compilation, Édition des liens , etc.
- Déploiement
- Permissions, documentation, readme, librairies
- Tests
- Unitaires, fonctionnels, régression
Construction automatisée
Certains outils permettent :
- La notification par email si la construction automatisée a
échoué - Leur utilsation en ligne de commande
- La création, en plus des tâches de base (ex. compilation, tests
unitaires), des taches spécifiques à une entreprise ou un projet
particulier. - La création et l’ajout de tâches personnalisées, apportant ainsi
une flexibilité d’utilisation. - L’intégration des gestionnaires de sources pour
construire construire n’importe quelle version
(pour un tag donné, pour une date donnée, etc.) - La portabilité en permettant de construire
l’application indépendamment du système
d’exploitation - Avant les outils de construction automatisée, on automatisait la
construction avec des scripts dépendants du système d’exploitation
La construction automatisée permet
- de tester l’intégration d’une modification
- De construire l’application plusieurs fois par jour
- De se terminer dans un délai raisonnable
(quelques minutes) - D’intégrer l’exécution des tests unitaires et de
vérifier ainsi la qualité de votre construction (build) - une bonne couverture de tests unitaires est
indispensable
Les avantages de la construction automatisée:
- Permet une construction plus fréquente et plus rapide
- Meilleure qualité des livrables
- Moins d’erreurs de construction
- Moins d’oublis
- Automatiser des tâches redondantes
- Moins coûteux
- Moins d’allocation de ressources
- Production de rapports d’erreurs et exécution de tests
Outils de construction automatisée
* Quelques outils connus :
- make
- Ant
- Maven
- Nouvelle génération
- Gradle
- Buildr
make
Outil pour créer des scripts des commandes de
construction de l’application, basé UNIX
* Les commandes sont des commandes Shell, donc spécifiques au
système d’exploitation
* Le script s’appelle un makefile
On divise les différents morceaux à construire en
cibles (targets)
L’outil exécute les cibles uniquement si nécessaire
La cible spécifie ses dépendances (d’autres cibles qui
doivent être exécutées avant celle-ci) et les commandes à
exécuter
* La syntaxe :
nom_de_cible: dependance
Commande#1
Commande#2
Il est également possible de spécifier des constantes pour
éviter les erreurs et la répétition dans les commandes
Très rapide, encore utilisé des vieux projets legacy
Ant
Projet Apache - Un make plus moderne
Utilise la même approche que make pour les cibles et les
dépendances utilise des taches (tasks) au lieu des commandes
Portable
Syntaxe XML
Exécute du code Java
Cependant, il faut éviter de mettre des commandes Shell
dans un script Ant pour garder la portabilité.
Taches Ant
La plupart des manipulations courantes sont disponibles au travers une tache
Ant
On peut créer une tache spécifique en Java et l’utiliser avec Ant
Le fichier de script des Taches Ant doit s’appeler build.xml et être placé à la
racine du projet
Les IDEs supporte Ant de manière native
NetBeans intègre Ant à travers son interface graphique
Ant a été très populaire dans le passé, mais sa syntaxe complexe et très
verbeuse a entraînée une perte de popularité
Maven
Projet Apache - Version courante : Maven 3.9
Construction plus évoluée que Ant
Convention over configuration
Si on suit la convention et la structure préétablies
par Maven, il n’y a presque pas de configuration à faire.
Il s’utilise à la ligne de commande ou s’intègre à votre IDE
NetBeans intègre Maven à travers son interface
graphique
La configuration de Maven se retrouve dans le
document POM
POM - Project Object Model
document XML qui contient les
spécifications du projet
Permet :
* La construction
* Le déploiement
* L’exécution des tests
* La gestion des dépendances
Maven normalise la structure du projet
Répertoires, Packages, Tests
La gestion des dépendances peut poser problème
dans un projet en Java
Librairies JAR
Difficile de savoir quelle version du JAR on doit
utiliser, et on ne veut pas nécessairement mettre le
JAR dans le gestionnaire de sources
Maven POM.XML
Dependencies
On peut spécifier les dépendances du projet dans le
document POM :
Maven
Maven propose une solution à ce problème
- Les librairies sont gérées par un dépôt Maven
- http://mvnrepository.com/
- Ce dépôt peut être configurer sur Internet, sur le réseau local, ou
sur la machine locale - La majorité des fournisseurs de librairies ont publié sur le dépôt
Maven leurs librairies et l’élément dependancy à ajouter au POM
Maven ajoutera automatiquement au projet toutes les
librairies dont dépendent celles du POM
- On appelle ces dernières des dépendances transitives
- En ajoutant une dépendance sur la librairie :
- json-lib-2.4-jdk15
- Maven ajoute automatiquement les librairies :
- commons-beanutils-1.8.0
- commons-collections-3.2.1
- commons-lang-2.5
- commons-logging-1.1.1
- ezmorph-1.0.6
- L’élément classifier dans le POM ciblant le JRE:
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
<classifier>jdk15</classifier>
</dependency>