• # Ant like. A quand un maven like ?

    Posté par (site web personnel) . En réponse à la dépêche Waf - un système de construction de logiciels. Évalué à 1.

    Ok, au vue des exemples que j'ai pu voir, on reste encore à des choses du type Ant pour Java qui a été une solution très intéressante de remplacement des Makefile dans le dév Java.
    Or, depuis quelques année est apparue sur la plate-forme Java un remplacement à ce genre de système de construction de logiciels : maven.
    http://maven.apache.org/

    Pour ceux qui ne connaissent pas, maven est un système de construction de logiciel de plus haut niveau au sens où d'une part il impose une structure du projet et d'autre par il parcours différentes phases dans l'écriture de code : validate, compile, test, package, integration-test, install, deploy pour ne citer que quelques uns.
    (Voir http://www.oqube.com/formations/maven/lifecycle.html pour une vision plus complète des phases.)
    Il n'y pas plus la définition de tâches mais des plugins avec différentes cibles d'exécutions : un pour la compilation de code, un autre pour dérouler des tests, un pour archiver, etc. Chacun va s'exécuter dans une ou plusieurs phases selon son objectif.
    Un autre avantage, et un gros, de Maven, est la gestion des dépendances : les dépendances en bibliothèques sont automatiquement téléchargées de dépôts maven sur le Web et intégrées dans les phases de compilation, de tests, etc. Les dépendances transitives sont aussi prises en compte. Ce qui est aussi intéressant, c'est que seul les plugins définis dans le POM (Project Object Model, le descripteur du projet), sont chargés (et récupérés du Web s'ils ne sont pas présents dans le cache local (un dépôt local)).

    Malgré les défauts de Maven, après avoir travaillé avec aussi bien sur des petits que des plus gros projets, je ne reviendrais pas en arrière sur des systèmes de construction logicielle à la Ant ou Makefile ou Cons (dont SCons est un clone pour Python) ... Le principe de définition de tâches dans de tels systèmes peut devenir trop lourd avec de gros projets et de plus il faut soit même s'embêter à gérer les dépendances.

    Il est dommage qu'il n'y ait pas encore de projet du style Maven pour gérer la construction logicielle pour la plate-forme C/C++ ou Python.

    Sinon, il existe un concurrent à Maven : Raven, http://raven.rubyforge.org/