Bonjour à tous!
Le prochain démarrage du
groupe Java Developer , au cours duquel nous poursuivons tous notre expérience du fait que le processus d'apprentissage ne doit pas être continu ("La controversion doit-elle être continue?"). Autrement dit, nous avons légèrement retravaillé et mélangé le programme, et l'avons divisé en trois étapes, qui peuvent être facilement passées avec une pause entre elles. En général, c'est intéressant aussi bien pour les étudiants que pour nous, si seulement personne n'était mouillé, sinon le programme semblerait même un peu plus compliqué, même si ce n'était pas facile avant ça. Eh bien, un article traditionnellement intéressant lié à notre cours.
C'est parti!

Sur le
site officiel, picocli est décrit comme «une petite interface de ligne de commande puissante», qui «est un cadre Java à fichier unique pour analyser les arguments de la ligne de commande et créer des messages d'aide sans défaut et facilement personnalisables. Avec des fleurs. " Cet article fournit un
bref aperçu de Picocli 0.9.7 et de son utilisation pour analyser des arguments de ligne de commande dans du code Java.
Comme les autres bibliothèques de traitement en ligne de commande Java décrites dans cette série,
picocli est open source . Étant donné que tous les picocli sont implémentés dans un seul
fichier Java , vous pouvez facilement utiliser le code source directement si vous le souhaitez. Le site picocli souligne que "la particularité de picocli est qu'il permet aux utilisateurs d'exécuter des applications qui utilisent picocli sans exiger picocli lui-même comme une dépendance externe: tout le code source est situé dans un fichier pour encourager les auteurs d'applications à l'inclure dans le code source du programme" . Si vous préférez utiliser picocli comme une bibliothèque, dans le référentiel Maven dispose d' un
fichier JAR- avec l'ensemble des fichiers compilés (picocli représente un Java fichier, mais contient de nombreuses sous-classes et annotations s).
Le moyen le plus simple de se faire une idée de la nature d'un fichier unique de Picocli est de jeter un œil au fichier lui-même. Le code source de CommandLine.java est disponible sur la
page de téléchargement de
Picocli . Les deux captures d'écran suivantes montrent la sortie de
javap lors de l'exécution de la classe CommandLine et lors de l'exécution de l'une de ses annotations internes et de l'une de ses classes internes.


Que nous compilions CommandLine.java dans notre propre fichier classe / JAR ou que nous utilisions le JAR déjà construit de Maven, le code source de l'application utilisant Picocli sera évidemment le même. La phase de «détermination» de l'analyse des arguments à l'aide de Picocli est accomplie en annotant les champs de l'instance qui stockeront les valeurs associées aux paramètres de ligne de commande. Ceci est illustré dans l'extrait de code ci-dessous.
Étape de «définition» de Picocli @Command( name="Main", description="Demonstrating picocli", headerHeading="Demonstration Usage:%n%n") public class Main { @Option(names={"-v", "--verbose"}, description="Verbose output?") private boolean verbose; @Option(names={"-f", "--file"}, description="Path and name of file", required=true) private String fileName; @Option(names={"-h", "--help"}, description="Display help/usage.", help=true) boolean help;
L'exemple de code ci-dessus montre que Picocli vous permet de spécifier plusieurs noms d'indicateur (dans mon exemple, les noms à un caractère avec un trait d'union et les noms à plusieurs caractères avec deux traits d'union). Cet exemple montre également que required = true peut être défini pour les paramètres requis et help = true peut être spécifié pour
les options auxiliaires , telles que l'impression des détails d'utilisation et l'élimination des erreurs liées à l'absence de paramètres requis. Notez que Picocli 0.9.8 ajoute une prise en charge supplémentaire pour les types de messages d'assistance plus spécifiques
versionHelp et
usageHelp .
L'étape «d'analyse» dans Picocli est effectuée dans
CommandLine.populateCommand (T, String ...) , où T est une instance de la classe avec des champs annotés Picocli, et les lignes restantes sont les arguments qui doivent être analysés. Cela est illustré dans l'extrait de code suivant.
Phase d'analyse de Picocli final Main main = CommandLine.populateCommand(new Main(), arguments);
L'étape «polling» de Picocli consiste à accéder simplement aux champs annotés Picocli de l'instance qui ont été passés à la méthode CommandLine.populateCommand (T, String ...) à l'étape «parsing». Un exemple simple d'une telle «enquête» est présenté dans la liste suivante.
Phase d'enquête Picocli out.println( "The provided file path and name is " + main.fileName + " and verbosity is set to " + main.verbose);
L'affichage de messages auxiliaires ou d'informations d'utilisation à l'utilisateur lorsque -h ou --help est spécifié sur la ligne de commande est aussi simple que «d'interroger» un champ annoté Picocli pour lequel help = true a été spécifié pour déterminer si cette valeur booléenne a été définie ou non et, si elle est installée, appelez l'une des méthodes CommandLine.usage surchargées. J'ai dû utiliser l'une des versions statiques de cette méthode, comme indiqué dans la liste suivante.
Messages d'assistance / informations d'utilisation dans Picocli if (main.help) { CommandLine.usage(main, out, CommandLine.Help.Ansi.AUTO); }
Les quelques captures d'écran suivantes illustrent une application simple écrite à l'aide de picocli. La première capture d'écran montre le type de message d'erreur et la trace de pile si l'indicateur requis est manquant. La deuxième capture d'écran montre comment les noms longs et courts spécifiés dans les annotations sont utilisés. La troisième image montre la fonction d'affichage des messages auxiliaires en action.



L'une des fonctionnalités supplémentaires de Picocli, qui n'est pas disponible dans de nombreuses autres bibliothèques d'analyse d'arguments en ligne de commande Java, est la prise en charge de
la syntaxe des couleurs a. La première liste de ce message avait des lignes définies dans les annotations avec @ | | @ syntaxe. Dans la capture d'écran ci-dessus, qui montre l'utilisation de messages auxiliaires, ces caractères ont été transmis tels quels, sans traitement spécial. Cependant, si j'exécute cet exemple de code dans Cygwin, je verrai ce que ces signes font.

Dans la capture d'écran ci-dessus, nous voyons que Picocli a automatiquement appliqué la syntaxe de couleur (jaune et blanc) aux options de message auxiliaire et a également appliqué la syntaxe en gras et soulignée aux zones avec la description des messages auxiliaires où la syntaxe @ | a été appliquée | @.
Les fonctionnalités suivantes de Picocli sont à prendre en compte lors du choix d'un framework ou d'une bibliothèque pour faciliter l'analyse des arguments de ligne de commande en Java.
- Picocli est un projet open source sous licence avec Apache 2.0.
- Picocli ne nécessite pas de télécharger des bibliothèques ou des frameworks tiers.
- Tout le code source de Picocli est contenu dans un seul fichier .java, et ce code peut être copié et collé dans son propre système de gestion de configuration et compilé avec le reste du code d'application, ce qui signifie que même le fichier JAR Picocli n'est pas nécessaire.
- Le fichier source CommandLine.java (Picocli 0.9.7) contient un peu plus de 3 700 lignes (espaces et commentaires inclus) et pèse près de 200 Ko. Le fichier picocli-0.9.7.jar pèse environ 83 Ko.
- Picocli est opportun et fréquemment mis à jour. La version 0.9.8 a été publiée hier (après avoir écrit la plupart de ce post).
- Picocli possède une documentation très détaillée et est à bien des égards plus à jour que la documentation de certaines autres bibliothèques de traitement en ligne de commande Java.
- La prise en charge de la syntaxe des couleurs de Picocli est facile à utiliser et l'aide à l'utilisation de la syntaxe des couleurs sur toutes les plateformes est documentée dans la section Plateformes prises en charge .
- L'utilisation d'annotations Picocli pour les champs de niveau instance est similaire à l'utilisation d'annotations dans certaines autres bibliothèques de traitement de ligne de commande et présente les mêmes avantages.
- Les principales fonctionnalités de Picocli sont très pratiques et faciles à apprendre, mais Picocli prend également en charge la possibilité de configurer plusieurs aspects du traitement en ligne de commande à l'aide de Picocli.
Les listes de cet article sont entièrement disponibles sur
GitHub .
Picocli est une bibliothèque prise en charge et mise à jour pour l'analyse des arguments de ligne de commande Java. Il contient plusieurs nouvelles fonctionnalités et approches de certaines autres bibliothèques de traitement de ligne de commande disponibles écrites en Java, mais quelques fonctionnalités différentes y ont été ajoutées (telles que la syntaxe des couleurs et la bibliothèque entière encapsulée dans un fichier Java source). Picocli est assez facile à utiliser et attrayant en soi, mais il se démarquera probablement parmi d'autres bibliothèques pour un développeur individuel si ce développeur souhaite prendre en charge la syntaxe des couleurs ou la possibilité d'ajouter un fichier de code source au projet du développeur sans fichiers JAR supplémentaires ou compilés. fichiers de classe.
LA FIN
Comme toujours, nous attendons vos questions et commentaires.