:: Enseignements :: ESIPE :: E4INFO :: 2019-2020 :: Java Inside ::
[LOGO]

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.

  1. Créer un compte sur Github (si vous n'en aavez pas déjà un)
  2. 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.
  3. 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 ?
  4. Ajouter un fichier test.txt, puis utiliser git add. Puis faite en sorte que le fichier apparaisse sur Github.
  5. 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.
  6. Supprimer le fichier test.txt en locale et fait en sorte qu'il soit supprimer sur Github.
  7. 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
  8. 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.

  1. 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.
  2. 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
  3. 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.
  4. 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.
  5. 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.

  1. Enregistrez vous sur le site travis-ci.org et demander à ce que Travis s'occupe de votre repository GitHub java-inside
  2. Liser comment marche Travis
  3. 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   
        
  4. Utiliser la notion de build matrix pour tester votre projet et sous linux et sous macOS.