2009-04-06 6 views
41

J'ai un fichier de construction Apache Ant avec une commande <javac> qui nécessite quatre JAR spécifiques sur la version classpath. J'ai essayé de le faire:Obtenir Ant <javac> pour reconnaître un chemin de classe

<project basedir=".." default="build_to_jar" name="Transnet Spectrum Analyzer"> 
    <property environment="env"/> 
    <property name="src" value="src"/> 
    <property name="libsrc" value="library_sources" /> 
    <property name="build" value="build"/> 
    <property name="dist" value="dist"/> 
    <property name="target" value="1.5"/> 
    <property name="libraries" value="./libraries"/> 

    <fileset dir="." id="TSA.classpath"> 
     <include name="${libraries}/rxtx/RXTXcomm.jar" /> 
     <include name="${libraries}/commons-logging-1.1.1.jar" /> 
     <include name="${libsrc}/JCommon/jcommon-1.0.15.jar" /> 
     <include name="${libsrc}/JFreeChart/jfreechart-1.0.12.jar" /> 
    </fileset> 

    <target name="compile" depends="clean,init" description="compile the source " > 

     <echo>Compile from ${src} to ${build}</echo> 

     <javac destdir="${build}" source="${target}" target="${target}"> 
      <compilerarg value="-Xlint:unchecked"/> 
      <src path="${src}"/> 
      <classpath path="TSA.classpath" /> 
     </javac> 
    </target> 

    <!-- blah blah blah --> 
</project> 

... mais aucun des fichiers spécifiés dans TSA.classpath semblent apparaître. Comment puis-je inclure ces fichiers dans mon classpath?

Répondre

67

Voici un exemple d'un projet, je travaille actuellement. Je soupçonne que vous pouvez le modifier pour travailler pour votre situation.

<path id="master-classpath"> 
    <fileset dir="${web.dir}/WEB-INF/lib"> 
    <include name="*.jar"/> 
    </fileset> 

    <fileset dir="${appserver.lib}"> 
    <include name="servlet*.jar"/> 
    </fileset> 

    <pathelement path="${build.dir}"/> 
</path> 

... 

<javac destdir="${build.dir}"> 
    <src path="${src.dir}"/> 
    <classpath refid="master-classpath"/> 
</javac> 
+0

Je définis le ' ...' à partir d'un fichier XML, puis en utilisant '' pour appeler un autre fichier XML qui sait construire construire mes classes.Si l'ID de chemin est défini dans le XML 'externe' cela fonctionne bien, mais s'il est défini dans le XML appelant, j'obtiens une erreur. séparer XML et si oui, pourquoi je reçois cette erreur? – Jeach

14

Essayez ceci:

<classpath refid="TSA.classpath"/> 
14

Essayez

<javac ... classpathref="TSA.classpath"> 

ou

<javac ...> 
    ... 
    <classpath refid="TSA.classpath" /> 
</javac> 
+0

Il vaut la peine de lire ceci après celui qui a été choisi comme meilleure réponse (par @ William Brendel). Merci :) –

+0

Il est encore plutôt triste, il y a au moins trois façons différentes de le faire dans Ant, mais plus on est de fous, non? (Un troisième serait d'inclure un chemin de classe complet dans javac, un quatrième serait de faire un chemin de classe partiel qui en référence partiellement un autre ... etc.) –

+0

Juste pour clarifier, le second ne fonctionne pas, au moins où 'TSA.classpath' est un' '. – StockB

Questions connexes