fbiville / annotation-processing-ftw

Devoxx '15 hands-on lab - Annotation Processing: @​Nailed("it")
MIT License
5 stars 5 forks source link

= Annotation Processing: @​Nailed("it") :toc: right :toc-title: Hands-On Devoxx 2015 :icons: font :source-highlighter: pygments

Ceci est le support du Hands-On de Devoxx France 2015 intitulé http://cfp.devoxx.fr/2015/talk/QHH-4326/Compile-time_annotation_processing_:_@Nailed(%22it%22)[Annotation Processing: @​Nailed("it")] créé par https://github.com/fbiville/[Florent Biville] et https://github.com/lesaint[Sébastien Lesaint].

== Installation de l'environnement

=== Prérequis

  1. un terminal
  2. Java 8
  3. Maven 3.1.1 ou 3.2.5 ou 3.3.1
  4. l'IDE de votre choix

=== Récupérer les sources

Pour suivre ce hands-on, vous avez besoin des sources. Vous pouvez les récupérer :

  1. en faisant un clone du répository Git sur GitHub +

    $ mkdir ~/devoxx_2015 $ git clone https://github.com/fbiville/annotation-processing-ftw.git ~/devoxx_2015/annotation-processing-ftw

  2. en copiant le repértoire annotation-processing-ftw présent sur la clé USB

=== Installer Java 8

Sur la clé USB, vous trouverez dans le répertoire binaries les fichiers d'installation pour :

=== Installer Maven

Sur la clé USB, vous trouverez dans le répertoire binaries les fichiers d'installation pour Maven 3.3.1 (apache-maven-3.3.1-bin.zip) mais aussi pour Maven 3.2.5 et 3.1.1 qui sont présents pour votre divertissement.

==== Installation sous Linux & Mac OS

==== Installation sous Windows

==== Utiliser le repo fourni

Sur la clé USB fournie, vous trouverez un repository Maven préalimenté avec les dépendances nécessaires pour résoudre les exercices.

Pour l'utiliser, il suffit de créer/modifier le fichier ${user.home}/.m2/settings.xml de votre compte utilisateur pour pointer vers votre copie de ce repository.

<?xml version="1.0" encoding="UTF-8"?>

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
  <localRepository>[path_vers_votre_copie_du_contenu_de_la_clé_USB]/maven/repository</localRepository>

  <!-- whatever -->

</settings>

=== Ouvrir les README

Pour suivre ce hands-on, suivez les instructions présentées dans les fichiers README.html.

  1. ouvrez le README.html (oui, oui, la page que vous êtes en train de lire) à la racine du repo dans votre navigateur
  2. ouvrez le README.html du répertoire doc dans un autre onglet nous vous fournissons les documentations qui vous permettront de résoudre la plupart des exercices régulièrement, nous vous orienterons même vers la bonne documentation (trop sympa)

== Structure du Hands-on

=== 3 niveaux

Ce hands-on est structuré en 3 niveaux. Ceux-ci vont progressivement vous amener à apprécier les capacités des annotation processors et de leurs usages.

=== une présentation et des exercices

Chaque niveau est précédé d'une courte présentation (5 à 10 minutes max) et découpé en plusieurs exercices. Chacun se réalise en quelques étapes successives.

=== un README

Chaque niveau possède un README.asciidoc et un README.html qui décrit les exercices et les étapes. Il est à nouveau conseillé de visualiser la version HTML en local (meilleur rendu) que le rendu du ASCIIDOC sur GitHub.

L'essentiel de l'information qui vous permettra de compléter les exercices se trouve dans le README:

Le niveau 2 fait exception car vous trouverez beaucoup plus d'informations dans la javadoc. Dans le cas de ce niveau, c'était beaucoup plus pertinent.

=== philosophie

Les niveaux sont conçus de manière assez directive: ceux-ci comportent de nombreux problèmes mais les solutions sont courtes. On pourrait parler d'exercices unitaires.

Si vous vous retrouvez à écrire plus de 50 lignes de code, levez la main, vous faites probablement fausse route et nos indications n'étaient probablement pas assez bonnes.

L'objectif est de faire découvrir le traitement d'annotation par petits lots, qui, enchaînés les uns aux autres, vous en donneront une vision d'ensemble. On en profite au passage pour vous diriger vers la solution la plus efficace, celle promulguée par les concepteurs de l'API.

=== documentation

Nous vous fournissons hors-ligne les documentations qui vous permettront de résoudre la plupart des exercices. Bien évidemment, rien ne vous empêche de les consulter en ligne ou même d'utiliser Google.

Le link:doc/README.html[README] du répertoire doc vous permettra d'accéder facilement à chaque documentation (en ligne et hors-ligne) et propose même quelques raccourcis vers les documentations indispensables.

== Let's dive in !

Niveau 1:: Comprendre les bases et mettre les mains dans le cambouis : link:niveau_1/README.html[html local] ou link:niveau_1/README.asciidoc[Asciidoc GitHub] Niveau 2:: Comprendre le modèle des sources Java : link:niveau_2/README.html[html local] ou link:niveau_2/README.asciidoc[Asciidoc GitHub] Niveau 3:: Générer des erreurs de compilation et des fichiers : link:niveau_3/README.html[html local] ou link:niveau_3/README.asciidoc[Asciidoc GitHub]