:: Enseignements :: ESIPE :: E4INFO :: 2019-2020 :: Java Inside ::
![[LOGO]](http://igm.univ-mlv.fr/ens/resources/mlv.png) |
Bootcamp
|
Git, Github, Maven, JUnit, Travis
Exercice 1 - Git / Github
Le but de cet exercice est de créer un repository sur Github qui sera utiliser pour le reste des labs.
-
Créer un compte sur Github (si vous n'en aavez pas déjà un)
-
Créer un repository nommé java-inside avec un .gitignore configuré pour les projets Java
et un README indiquant que ce repository contient les sources du lab1 de la matière Java Inside.
-
Dans votre home directory sur la machine de la fac (ou votre propre machine), cloner le projet avec
git clone (dans un terminal).
Changer l'editeur de texte (pour le texte des commits) pour utiliser vi
export GIT_EDITOR=vi
Modifier le README puis faite une git commit et aller vérifier que le README est bien mis à jour sur GitHub.
Que se passe t'il ? Pourquoi ? Comment corriger le problème ?
-
Ajouter un fichier test.txt, puis utiliser git add. Puis faite en sorte que le fichier apparaisse sur Github.
-
Modifier le contenu du fichier test.txt en utilisant directement l'interface de github
(le petit stylo Edit) pui commiter le.
Comment faire pour mettre à jour la copie local de votre repository pour que vous voyez le contenu du fichier changé
sur la machine locale.
-
Supprimer le fichier test.txt en locale et fait en sorte qu'il soit supprimer sur Github.
-
Ouvrer Eclipse (en utilisant la version /home/ens/forax/java-inside/eclipse) et répéter les mêmes opérations,
- créer un fichier test-eclipse.txt en local
- faire en sorte qu'il soit pris en compte par git
- faire en sorte qu'il soit visible sur github
- modifier le en utilisant l'interface de Github
- faire en sorte de voir les modifications que vous avez fait en local
- suprimmer le fichier en local et de mettre à jour le repository sur Github
-
Prenez une feuille blanche et faire un dessin expliquant le fonctionnement de Git !
Exercice 2 - Maven et JUnit 5
Pour la suite des labs, nous allons utiliser un outils de build nommer maven
pour gérer les dépendences, compiler, packager, executer les tests d'un projet Java.
Dans le monde Java, historiquement,
ant qui ressemble à
Make mais avec un fichier de build écrit en Java
était utiliser. Depuis une quizaine d'année, la plupart des projets utilise
soit
Apache Maven (build toujours en XML) si le build est standard ou
Gradle si le build (en Groovy ou récemment Kotlin) est plus compliqué.
Maven compile et build en utilisant
mvn clean package
le résultat du build est mis dans le répertoire
target.
-
Dans le répertoire java-inside, utiliser Maven pour générer
un squelette des différents répertoires et fichiers nécessaire au bon fonctionnement de Maven.
mvn archetype:generate \
-DarchetypeArtifactId=maven-archetype-quickstart \
-DgroupId=fr.umlv.java.inside \
-DartifactId=lab1 \
-DinteractiveMode=false
Nous allons maintenant demander à maven d'utiliser Java 13,
pour cela nous devons spécialiser le build en spécifiant
le plugin de compilation ainsi que sa configuration
Ajouter à la fin du fichier pom.xml
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<release>13</release>
</configuration>
</plugin>
</plugins>
</build>
Noter que maven râle que vous utilisez pas UTF-8 comme encoding,
donc ajouter
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
Note: même si l'ordre n'a pas d'importance, on a l'habitude de mettre dans un pom,
les infos de versions, puis les propriétés, puis les dépendances et enfin les plugins de build.
Ajouter une classe Java fr.umlv.javainside.lab1.SwitchExample
dans le répertoire src/main/java avec la méthode suivante
static int switchExample(String s) {
int result;
switch(s) {
case "dog":
result = 1;
break;
case "cat":
result = 2;
break;
default:
result = 4;
break;
}
return result;
}
Vérifier que le projet build correctement.
-
Ajouter une classe de test fr.umlv.javainside.lab1.SwitchExampleTest
dans le répertoire src/test/java, tester toutes les branches du switch de la méthode switchExample
utilisant le framework de test JUnit 5.
Faite en sorte que votre projet Eclipse utilise JUnit 5 comme dépendance.
Pour vous aidez, vous pouvez regarder le guide de JUnit 5 section 2
-
On peut remarquer le que pom.xml généré utilise pas la bonne version de JUnit,
changer le pom.xml pour dépendre de la librairie JUnit 5 ?
Regarder le guide de JUnit 5 section 4.2.2
Modifier le pom.xml et vérifier que le projet compile et que les tests sont bien exécutées.
-
Depuis Java 12, il existe une nouvelle feature, le switch expression qui permet de simplifier
l'écriture du switch dans le cas où il renvoie une expression
Ajouter la méthode
static int switchExample2(String s) {
return switch(s) {
case "dog" -> 1;
case "cat" -> 2;
default -> 4;
};
}
Note: il faut expliquer à eclipse que vous avez le droit d'utiliser le switch expression
qui est une preview feature.
-
Il faut aussi expliquer à Maven que lorsque l'on compile, il faut indiquer au plugin de compilation
que vous utilisez une preview feature avec la balise compilerArgs
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<release>13</release>
<compilerArgs>--enable-preview</compilerArgs>
</configuration>
</plugin>
Attention, ce n'est pas suffisant, il faut aussi faire la même manip
pour que les tests soient exécuter avec le flag --enable-preview.
Exercice 3 - Travis
Travis est un service qui permet de tester (et déployer) du code à distance.
Travis est intégré avec Github et execute le script de test à chaque fois qu'un commit est fait.
-
Enregistrez vous sur le site travis-ci.org et demander à ce que Travis
s'occupe de votre repository GitHub java-inside
-
Liser comment marche Travis
-
Créer un fichier .travis.yml, qui décrit en YAML
la configuration de test.
Attention: Travis est sourcillieux avec son fichier YAML , il n'accepte pas les tabs et
un déclage se fait avec 2 espaces, pas 3, pas 1 !
language: java
jdk: openjdk13
# install:
# - mettre une commmande si nécessaire
script:
- cd lab1
- mvn package
-
Utiliser la notion de build matrix
pour tester votre projet et sous linux et sous macOS.
© Université de Marne-la-Vallée