= 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
=== Récupérer les sources
Pour suivre ce hands-on, vous avez besoin des sources. Vous pouvez les récupérer :
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 :
linux 32 bits (jdk-8u40-linux-i586.tar.gz
) ou 64 bits (jdk-8u40-linux-x64.tar.gz
)
** créez un répertoire pour Java (par exemple ~/java
)
** décompressez l'archive pour votre architecture, dans votre répertoire d'installation
** ajoutez le répertoire bin
de Java à votre PATH
*** de façon temporaire
*** de façon définitive en modifiant votre fichier .bashrc
ou .zshrc
Mac OS (jdk-8u40-macosx-x64.dmg
)
double-cliquez sur le fichier et suivez les écrans d'installation si vous aviez déjà un JDK d'une version antérieure installé précédemment, assurez-vous d'exécuter : *** de façon temporaire
*** de façon définitive en modifiant votre fichier .bashrc
ou .zshrc
Windows 32 bits (jdk-8u40-windows-i586.exe
) ou 64 bits (jdk-8u40-windows-x64.exe
)
** lancez le .exe
qui correspond à votre architecture et suivez les instructions de l'installeur (prenez garde à ne pas installer Ask)
=== 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
~/maven
)apache-maven-3.3.1-bin.zip
, dans votre répertoire d'installationbin
de Maven à votre PATH
et définissez la variable globale M2_HOME
** de façon temporaire** de façon définitive en modifiant votre fichier .bashrc
ou .zshrc
==== Installation sous Windows
apache-maven-3.3.1-bin.zip
, dans votre répertoire d'installation (e.g. C:\Program Files\
)C:\Program Files\apache-maven-3.3.1
(ou équivalent) dans Path (pour y accéder : clic-droit sur Ordinateur dans le menu démarrer puis "Paramètres avancés")cmd.exe
dans le menu démarrer) et exécutez mvn -version
pour vérifier que votre configuration fonctionne==== 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
.
README.html
(oui, oui, la page que vous êtes en train de lire) à la racine du repo dans votre navigateurREADME.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:
InjectedPropertyProcessor
, implémentez la méthode process
.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]