IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Eclipse Platform Discussion :

[PDE Build – Ant Runner]: erreur lors de l’utilisation d’une nouvelle tâche ANT


Sujet :

Eclipse Platform

  1. #1
    Dov
    Dov est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2002
    Messages : 48
    Par défaut [PDE Build – Ant Runner]: erreur lors de l’utilisation d’une nouvelle tâche ANT
    Bonjour à tous,

    Je souhaite utiliser dans un fichier build.xml une tâche ANT contenue dans un jar spécifique.

    Pour cela, j'ai développé un plug-in très simple qui encapsule le fichier jar (contenant la tâche Ant que je souhaite utiliser) et dans lequel j’ai défini l’extension suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <extension id="nsis" name="nsis" point="org.eclipse.ant.core.antTasks">
    	<antTask class="net.sf.nsisant.Task"
                library="lib/nsisant-1.2.jar"
                name="nsis">
    	</antTask>
    </extension>
    Lorsque j'exécute ce plug-in (lancement d’une nouvelle instance d'Eclipse), la nouvelle tâche Ant (nsis dans mon exemple) apparaît bien dans menu Window/Preferences/Ant/Runtime onglet Tasks et le jar contenant la tâche est bien défini dans la section Contributed Entries de l'onglet Classpath.

    A présent si je crée (toujours dans cette nouvelle instance d’Eclipse) un fichier build.xml, la nouvelle tâche est bien reconnue mais lors de l'exécution du fichier build.xml (via Ant Runner), j'ai l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Caused by: …customTargets.xml:183: Problem: failed to create task or type nsis
    Cause: The name is undefined.
    Action: Check the spelling.
    Action: Check that any custom tasks/types have been declared.
    Action: Check that any <presetdef>/<macrodef> declarations have taken place.
    Ai je oublié quelque chose (un path supplémentaire à définir, …) ?

    Merci d’avance pour votre aide

  2. #2
    Membre chevronné

    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Juin 2004
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en technologies

    Informations forums :
    Inscription : Juin 2004
    Messages : 332
    Par défaut
    Le JAR est-il aussi bien visible dans la "launch configuration" de ton script ant ? dans l'onglet classpath..?

  3. #3
    Dov
    Dov est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2002
    Messages : 48
    Par défaut
    Merci kartben pour ta réponse.

    Non, le jar n'est pas visible dans le classpath des scripts Ant (build.xml et customTargets.xml).
    Si je l'ajoute, j'ai toujours la même erreur.

  4. #4
    Membre chevronné

    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Juin 2004
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en technologies

    Informations forums :
    Inscription : Juin 2004
    Messages : 332
    Par défaut
    Ah mais j'avais pas vu que tu étais dans un contexte PDE Build...
    Je suis pas sûr du tout que le PDE Build soit "aware" de ce qui est défini via le point d'extension des antTasks

    A mon avis il faut faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <taskdef name="nsis" classpath="/lib/chemin/de/ton.jar" classname="net.sf.nsisant.Task" />
    dans ton script Ant avant d'utiliser ta tâche...

  5. #5
    Dov
    Dov est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2002
    Messages : 48
    Par défaut
    Ça marche effectivement très bien en définissant la tâche avec <taskdef/> et je n'ai (du coup) plus besoin d'utiliser le point d'extension.

    Si le PDE Build fait abstraction des tâches Ant définies via le point d'extension, je n'ai pas trop le choix

    Merci encore pour ton aide


  6. #6
    Dov
    Dov est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2002
    Messages : 48
    Par défaut
    Juste pour info,

    Je viens de refaire un nouveau test, sans définir la tâche avec <taskDef/> (et donc en appelant toujours la tâche définie via le point d'extension), et je n'ai plus l'erreur de mon 1er post

    En fait je me suis aperçu que dans la configuration de lancement de mon process de build, le plug-in encapsulant la lib et définissant le point d'extension de la tâche n'était pas coché

    Par contre, j'ai à présent une nouvelle erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    …customTargets.xml:161: The following error occurred while executing this line:
    …customTargets.xml:182: java.lang.NullPointerException
    at org.apache.tools.ant.ProjectHelper.addLocationToBuildException(ProjectHelper.java:541)
    at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:418)
    at org.apache.tools.ant.taskdefs.CallTarget.execute(CallTarget.java:105)
    …
     
    Caused by: … customTargets.xml:182: java.lang.NullPointerException
    	at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:115)
     
    …
    Caused by: java.lang.NullPointerException
    	at net.sf.nsisant.Task.execute(Unknown Source)
    A priori , le build a bien trouvé la tâche et tente de l'exécuter. En allant voir du côté du source de la tâche, la méthode execute() contient l'instruction suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Execute exe = new Execute(new LogStreamHandler(this, Project.MSG_INFO, Project.MSG_WARN));
    exe.setAntRun(getProject());
    et il semblerait que la méthode getProject() retourne Null.

    Une idée ?

    Merci par avance

  7. #7
    Dov
    Dov est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2002
    Messages : 48
    Par défaut [Résolu]
    Ça marche a présent très bien en utilisant la tâche définie par le point d’extension.

    En fait, il fallait également définir le point d’extension org.eclipse.ant.core.extraClasspathEntries. Comme l'indique la description :
    Allows plug-ins to define arbitrary JARs for use by the Ant infrastructure. These JARs are put into the Ant classpath at runtime. Besides the JAR, the plug-in classloader of the plug-in providing the JAR is also added to the classpath.
    Donc en résumé, le fichier plugin.xml est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    <plugin>
       <extension id="nsis" name="nsis" point="org.eclipse.ant.core.antTasks">
          <antTask
                class="net.sf.nsisant.Task"
                library="lib/nsisant-1.2.jar"
                name="nsis">
          </antTask>
       </extension>
       <extension point="org.eclipse.ant.core.extraClasspathEntries">
          <extraClasspathEntry 
                library="lib/nsisant-1.2.jar">
          </extraClasspathEntry>
       </extension>
    </plugin>
    Et il ne faut pas définir de classpath supplémentaire (ne rien rajouter dans la section Classpath de l'onglet Runtime ni dans la section Runtime Information de l'onglet Build).

    Et du coup, lorsque je lance la seconde instance d'Eclipse, je peux utiliser dans le fichier customTargets.xml, la tâche sans aucun problème (et plus besoin de la définir par le <taskdef/>)


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VS2008] Erreur lors du build
    Par magic-moad dans le forum Visual Studio
    Réponses: 1
    Dernier message: 20/12/2009, 18h50
  2. Réponses: 2
    Dernier message: 11/05/2009, 18h31
  3. VB 2008 Erreur lors du Build du projet
    Par angelevil dans le forum Windows Forms
    Réponses: 1
    Dernier message: 13/02/2009, 13h28
  4. [CruiseControl] [maven2] erreur lors du build
    Par boulaxx dans le forum Intégration Continue
    Réponses: 3
    Dernier message: 28/01/2009, 14h49
  5. [Continuum] Erreur lors du build ?
    Par MakaveliFr dans le forum Intégration Continue
    Réponses: 5
    Dernier message: 24/06/2008, 17h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo