2009-04-06 9 views
41

Tengo un archivo de compilación Apache Ant con un comando <javac> que requiere cuatro JAR específicos para estar en la compilación classpath. He tratado de hacer esto:Obteniendo Ant <javac> para reconocer un classpath

<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> 

... pero ninguno de los archivos especificados en TSA.classpath parecen aparecer. ¿Cómo incluyo estos archivos en mi classpath?

Respuesta

67

He aquí un ejemplo de un proyecto que actualmente estoy trabajando en. Sospecho que puedes modificarlo para que funcione para tu situación.

<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

Estoy definiendo ' ...' desde un archivo XML y luego usando '' para llamar a otro archivo XML que sepa cómo compilar construir mis clases. Si el ID de ruta está definido en el XML 'externo' funciona bien, pero si está definido en el XML de la llamada recibo un error. ¿Sabes si pueden estar en XML separado y si es así, ¿por qué estoy obteniendo este error? – Jeach

14

Prueba esto:

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

Trate

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

o

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

Vale la pena leer esto después del elegido como Mejor respuesta (por @William Brendel). Gracias :) –

+0

Todavía es bastante triste que hay al menos tres formas diferentes de hacer esto en Ant, pero cuanto más, mejor, ¿verdad? (Un tercero sería incluir un classpath completamente calificado dentro de javac, un cuarto sería hacer un classpath parcial que parcialmente haga referencia a otro ... etc.) –

+0

Para aclarar, el segundo no funciona, al menos donde 'TSA.classpath' es un' '. – StockB

Cuestiones relacionadas