A la découverte de l’outil Quokka
Dernièrement, est sorti la version 0.3 de Quokka. Il s’agit d’un outil de build open spource apportant comme Maven des conventions concernant les répertoires, un cycle de vie et la notion d’archetype de projets. La chaîne de build est fournie par un descripteur XML basé sur ANT : le fichier « build-quokka.xml ». Le descripteur Quokka est plus concis que Maven avec une approche par attribut contrairement à Maven qui pour le moment propose une approche assez pesante de ces éléments XML.
Le cycle de de vie de Maven est composé d’un ensemble de phases implémentant un ensemble de plugins. Avec Quokka, le cycle de vie est composé de manière similaire d’un ensemble de target implémentant également un ensemble de plugins. Quokka n’apporte sur ce point, strictement aucune plus value.
Une fonctionnalité intéressante de Quokka est le mécanisme de gestion des dépendances s’appuyant sur une mécanique de « path ». Il existe la notion de spécification de path permettant de contrôler la transitivité des dépendances à tous les niveaux. Les paths de dépendances sont définis au niveau des plugins ou des projets. Néanmoins, on peut regretter que Quokka propose son propre mécanisme alors que le célèbre gestionnaire de dépendances Ivy propose une alternative similaire. Cette fonctionnalité est la plus puissante de Quokka, néanmoins l’équivalent dans Maven avec les scopes de dépendances ‘compile’, ‘test’, ‘runtime’ et ‘provided’ ne sont-t-ils pas amplement suffisant dans la majorité des cas ?
Une plus value de Quokka est sa gestion des repository. Comme Maven, il propose une division en terme de localisation entre les repository situés sur la machine du développeur (repository locaux) et les repository distants. Mais contrairement à Maven qui ne sait gérer nativement qu’un seul repository local, Quokka offre des niveaux intermédiaires. Le principe est d’avoir un repository « shared » équivalent au repository local de Maven et des repository projets. De plus, Quokka propose une division claire entre les artifacts de releases et snapshots pour les repository locaux contrairement à Maven ou le repository local est un mélange des deux notions.
En conclusion, Quokka fournit une alternative a Maven avec les conventions de build et la flexibilité de ANT. Mais Quokka apporte-t-il vraiment une plus value par rapport à l’association de Ant et du gestionnaire de dépendances Ivy ? Le choix de l’outil Gant qui propose une approche par programmation n’aurait-t-il pas été un meilleure choix que l’approche déclarative de Ant ? L’auteur de Quokka attend une validation de la communauté avant de poursuivre les futures évolutions de l’outil. Il ne faut donc pas hésiter à le tester.