2010-02-02 6 views
0

J'essaye d'obtenir des ant pour exécuter ma boîte à outils jsdoc. Après que je crée mon build.xml du examples sur le site, je me retrouve avec ceci:JS doc avec ant

<taskdef name="jsdoctoolkit" classname="uk.co.darrenhurley.ant.tasks.JsDocToolkit" classpath="/jsdoc/jsrun.jar;/jsdoc/java/classes/js.jar"/> 

Comme je lance #ant je reçois l'erreur suivante:

/pathto/jsdoc_toolkit-2.3.2/build.xml:1: Unexpected element "{}taskdef" {antlib:org.apache.tools.ant}taskdef 

Comme Je suis maintenant développeur Java, je ne peux que deviner que mon nom de classe (que j'ai pris sur le site) est incorrect. Mais j'ai maintenant une idée de quoi le remplacer.

Quelqu'un peut-il m'aider avec ceci?

+0

Pouvez-vous poster tous build.xml? Ou au moins la partie juste où vous faites le ? – Pointy

Répondre

0

Votre hypothèse immédiate est susceptible d'être incorrecte. L'erreur XML que vous avez rencontrée vous indique que l'analyseur a rencontré votre élément <taskdef> au mauvais emplacement dans la structure XML. En fait à ce stade, il n'avait même pas eu l'occasion de regarder à l'intérieur de l'élément lui-même, donc votre attribut classname ne peut pas être le problème. Comme le dit Pointy, essayez de publier l'intégralité de votre XML - ou du moins, jetez-y un coup d'œil et vérifiez que l'élément <taskdef> est correctement positionné. Il doit être au niveau supérieur de l'étiquette <project>. Si vous l'avez imbriqué dans d'autres éléments, ceci n'est pas valide et cela ne fonctionnera pas.

Généralement votre buildfile pourrait ressembler à ceci:

<project name="MyProject" default="dist" basedir="."> 
    <description> 
     simple example build file 
    </description> 
    <!-- set global properties for this build --> 
    <property name="src" location="src"/> 
    <property name="build" location="build"/> 
    <property name="dist" location="dist"/> 

    <taskdef name="jsdoctoolkit" classname="uk.co.darrenhurley.ant.tasks.JsDocToolkit" classpath="/jsdoc/jsrun.jar;/jsdoc/java/classes/js.jar"/> 

    <!-- Rest of file... --> 

Dans tous les cas, si vous déplacez votre taskdef ligne où il est maintenant, directement en dessous de la ligne <project> en haut du fichier, je Attendez-vous à ce que cela règle votre problème.

1

Je n'ai pas eu beaucoup de chance d'essayer de faire fonctionner la tâche jsdoctoolkit non plus. Heureusement, il est assez facile d'exécuter JSDoc Toolkit directement depuis Ant sans utiliser la tâche.

<property name="source.dir" value="source" /> 
<property name="doc.dir" value="docs" /> 

<property name="tool.dir" value="tools" /> 

<property name="jsdoctoolkit.dir" value="${tool.dir}/jsdoc_toolkit-2.4.0/jsdoc-toolkit" /> 


<target name="docs" description="Generates documentation"> 
    <sequential> 
     <delete dir="${doc.dir}"/> 
     <mkdir dir="${doc.dir}" /> 

     <echo message="Running JSDoc Toolkit"/> 

     <!-- The java exe is told to run in the dir where our source files reside. 
       If we instead ran it from the dir that the build file is in and gave it 
       full paths to the source files the documentation would include the full 
       filesystem paths (c:\path\to\source\) instead of relative ones. 
       Since this command is running in the source dir, all of the paths 
       given to it must first traverse down a level (../) to get back to the 
       build file dir. 
     --> 
     <exec executable="java" dir="${source.dir}"> 
      <arg line="-jar ../${jsdoctoolkit.dir}/jsrun.jar ../${jsdoctoolkit.dir}/app/run.js" /> 
      <!-- -d tells JSDoc toolkit where to output the documentation --> 
      <arg line="-d=../${doc.dir}" /> 
      <!-- use the default template --> 
      <arg line="-t=../${jsdoctoolkit.dir}/templates/jsdoc" /> 
      <!-- Create an arg element for each file you want to include in the documentation --> 
      <arg line="my-javascript-file.js" /> 
      <arg line="another-javascript-file.js" /> 
      <arg line="subdir/yet-another-javascript-file.js" /> 
     </exec> 
    </sequential> 
</target> 

Cet objectif suppose que le projet a la structure de répertoire suivant:

build.xml 
docs/ 
source/ 
    my-javascript-file.js 
    another-javascript-file.js 
    subdir/ 
     yet-another-javascript-file.js 
tools/ 
    jsdoc_toolkit-2.4.0/ 
     jsdoc-toolkit/ 
      jsrun.js 
      app/ 
       run.js