Avez-vous rêvé d’un debugger pour les build.xml d’Ant ?

January 19th, 2005 par Eric

Désormais votre rêve est devenu réalité dans votre IDE préféré : Netbeans. Avec tout ce qui vous faut : introspection des variables pas-à-pas… Bon c’est une version beta mais qui marche très bien !

8 Responses to “Avez-vous rêvé d’un debugger pour les build.xml d’Ant ?”

  1. Franck Says:

    Je suis aussi abonné à la weekly newsletter ;-)

  2. Eric Says:

    Ca montre que ma propagande commence à faire des émules !

    Je t’invite aussi alors à essayer mevenide, c’est vraiment un excellent plugin pour les amateurs de Maven (hein Freddy, bon je veux pas essayer de te convertir aussi mais sous Netbeans il n’y a pas besoin de générer quoi que ce soit pour monter un projet, Netbeans reconnait le project.xml et il monte le projet de suite).

  3. Simon Says:

    maven est un beau projet, simple et pratique. Mais pourquoi ne gère-t-il pas “totalement” les dépendances de dépendances ? C’est à mon sens une fonctionnalité majeure. En effet, si j’ai bien compris, la version 1.1 ne resoud que les dependances entre les projets internes (plug-in multiproject), mais pas des librairies externes…
    Et question idiote : pourquoi mevenide et pas mavenide ?

  4. Eric Says:

    Effectivement la gestion des dépendance de dépendance n’est prévu que pour Maven 2.0 de ce que j’ai lu sur le wiki, c’est effectivement vraiment dommage, toutefois il est a noter qu’il y a une extension d’Ant qui se charge des dépendances (et des dépendances de dépendances) : Ivy (Je ne l’ai pas essayé).

    Pour l’orthographe de MevenIde, l’explication se trouve sur la FAQ : c’est tout simplement une typo…

  5. Freddy Mallet Says:

    Juste pour être certain qu’on est sur la même longueur d’onde, ce qu’on entend par dépendance de dépendance :

    Si dans votre projet, vous souhaitez utiliser la librairie caribou-1.2.jar et que la librairie caribou à besoin de commons-logging-1.0.3.jar pour fonctionner vous allez être obligé d’ajouter dans le fichier projet.xml maven les deux dépendances caribou-1.2.jar et commons-logging-1.0.3.jar. L’objectif pour maven 2.0 serait donc d’ajouter uniquement la dépendance caribou-1.2.jar et maven se débrouillerait pour trouver la dépendance par rapport à commons-logging-1.0.3.jar à partir de son repository.

    C’est bien de cela dont vous parlez les amis ?

  6. Franck Says:

    Freddy, pour ma part, c’est plus dans l’aspect quoi compiler.
    Je m’explique:
    J’ai mon projet A qui est une super appli swing, cette appli dépend d’une lib/jar B qui est aussi géré par moi.
    Je voudrais donc exprimer que A dépend donc du jar B.
    Et surtout que si le jar B n’existe pas, on peut l’obtenir en lançant la tache dist (par ex.) du projet B.
    Et que bien sur, si je modifie des sources de B, quand je lance la compil de A,
    le truc magique voit que ça dépend de la lib B, qu’il vérifie que le jar B qui existe est bien à jour par rapport aux sources de B sinon => compile de B.
    Et bien sur que cela fonctionne récursivement en exprimant que la lib B dépend d’une lib C.
    J’ai l’impression que, de manière générale, la gestion de dépendance est un problème *intéressant*.
    On peut faire le parallèle avec les distribs linux comme debian qui gére un système de dépendance, par exemple sur un système vierge, lancer l’install de PHPMyadmin lance automatiquement l’install de apache+PHP+MySQL.
    En fait Gentoo serait plus approprié car cette distribution recompile les sources pour être au plus prés de la machine cible.
    C’est pour cela que je pense que l’on va arriver à une standardisation de la notion de projet.
    Cette standardisation a commencé avec ant qui par rapport à make permet de s’abstraire du système d’exploitation hôte (en effet make peut exécuter n’importe quelle commande du shell sous jacent ce qui le rend peu portable).
    Ant définit donc des équivalents multiplateforme à cp, mv, etc…
    Mais ant ne force pas l’utilisation de tâche spécifique, on n’est pas obligé de définir une tâche dist par ex.
    Ce qui rend la gestion multi projet difficle.
    Avec Maven, si j’ai bien compris, on monte d’un cran dans le sens ou des tâches devenues goals sont déjà prédéfinies.
    Ce qui facilite le multi projet.
    Mais il reste encore à gérer les dépendances et les dépendances de dépendances…

  7. Eric Says:

    De mon côté je le voyais dans un premier temps par rapport à la notion de dépendances de dépendance de Freddy. En effet un soucis arrive rapidement lorsque l’on développe un produit avec quelques librairies opensource: quels jar est nécessaire pour quel autre ? Maven simplifie déjà cela car sur le site web de chaque produit on obtient les dépendances. Malheureusement ces données ne sont pas utilisées pour le rapatriement des dépendances, il serait vraiment intéressant de voir ce que donne la version 2 de Maven là dessus.

    Cependant un autre problème va surgir… Le clash de dépendances: comment faire si caribou-1.2.jar dépend de log4j-1.2.9.jar et elfe-69.12.jar de log4j-1.3.0.jar ? A ce moment je serais effectivement _très_ intéressé par l’option de Franck qui me permettrait de recompiler l’ensemble de mon projet et mes dépendances pour vérifier que la compilation fonctionne et ensuite de passer les tests unitaires!

    Toutefois ce même scénario se complique encore plus : la compilation ne fonctionne pas ou un test unitaire n’est pas passé. Je vois la modification à faire mais celle-ci ne peut être intégrée aux sources CVS du projet duquel une de mes librairies dépend, comment je règle ce problème ?

    Mais nous dérivons de sujet:

    <pub>
    Viendez voir le debugger Ant de Netbeans…
    </pub>

  8. Freddy Mallet Says:

    Franck, si j’ai bien compris ce que tu entends par dépendance la commande ‘maven mulriproject:instal’ répond à ton souhait. Il faut juste que tu ai une racine (au sens répertoire) commune à tous tes projets. Tu lances alors la commande et Maven se charge de ‘fouiller’ tous les sous répertoires à la recherche de projets Maven, analyse les dépendances entre projets (à l’aide du reactor) et compile les libs dans le bon ordre. Mais mon petit doigt me dit que tu voulais parler d’un truc un poil plus complexe ?

Leave a Reply

You must be logged in to post a comment.