2009-04-06 12 views
41

Possiedo un file di build Apache Ant con un comando <javac> che richiede quattro JAR specifici per la build classpath. Ho provato a fare questo:Ottenere Ant <javac> per riconoscere un percorso di 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> 

... ma nessuno dei file specificati nel TSA.classpath sembrano presentarsi. Come posso includere questi file nel mio classpath?

risposta

67

Ecco un esempio da un progetto Attualmente sto lavorando su. Sospetto che tu possa modificarlo per funzionare per la tua situazione.

<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

Sto definendo il ' ...' da un file XML e quindi utilizzando '' chiamare un altro file XML che sa come compilare le mie classi Se l'id del percorso è definito nell'XML esterno, funziona bene, ma se viene definito nell'XML chiamante ottengo un errore.Sapete se questi possono essere XML separati e, in caso affermativo, perché sto ricevendo questo errore? – Jeach

14

Prova questo:

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

Prova

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

o

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

Vale la pena leggerlo dopo quello scelto come migliore risposta (da @William Brendel). Grazie :) –

+0

È ancora piuttosto triste che ci siano almeno tre modi diversi per farlo in Ant, ma più siamo, e meglio è, giusto? (Un terzo sarebbe quello di includere un classpath pienamente qualificato all'interno di javac, un quarto sarebbe quello di creare un classpath parziale che rimandi parzialmente ad un altro ... ecc.) –

+0

Giusto per chiarire, il secondo non funziona, almeno dove 'TSA.classpath' è un' '. – StockB

Problemi correlati