Construction Automatisée Flashcards

1
Q

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
A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Outils de construction automatisée
Manipulations possibles

A
  • 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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Outils de construction automatisée
* Etapes principales

A
  • Création d’un répertoire vide
  • Construction de l’application
    à partir des sources
  • Production des livrables
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Outils de construction automatisée
* Etapes détaillées

A
  • 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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Construction automatisée
Certains outils permettent :

A
  • 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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

La construction automatisée permet

A
  • 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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Les avantages de la construction automatisée:

A
  • 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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Outils de construction automatisée
* Quelques outils connus :

A
  • make
  • Ant
  • Maven
  • Nouvelle génération
  • Gradle
  • Buildr
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

make

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Ant

A

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é.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Taches Ant

A

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é

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Maven

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Maven POM.XML

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Dependencies
On peut spécifier les dépendances du projet dans le
document POM :

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Maven
Maven propose une solution à ce problème

A
  • 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>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly