2009-04-06 14 views
41

Mam plik kompilacji Apache Ant z komendą <javac>, która wymaga czterech określonych JARów do zbudowania classpath. Próbowałem to zrobić:Otrzymywanie Ant <javac> do rozpoznawania ścieżki klasy

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

... ale żaden z plików podanych w TSA.classpath wydają się pokazać. Jak umieścić te pliki w ścieżce klas?

Odpowiedz

67

Oto przykład z projektem Ja obecnie pracuje. Podejrzewam, że możesz go zmodyfikować, by działał w twojej sytuacji.

<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

Definiuję '<ścieżka id =' mojaID '"> ...' z pliku XML, a następnie używając '' wywołać inny plik XML, który wie, jak budować moje klasy.Jeśli identyfikator ścieżki jest zdefiniowany w "zewnętrznym" XML to działa dobrze, ale jeśli jest zdefiniowany w wywołującym XML, pojawia się błąd. Czy wiesz, czy mogą one być oddzielne pliki XML i jeśli tak, dlaczego pojawia się ten błąd? – Jeach

14

Spróbuj tego:

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

Spróbuj

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

lub

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

Warto przeczytać to po tym, który został wybrany jako Najlepsza odpowiedź (autor @William Brendel). Dzięki :) –

+0

To wciąż smutne, istnieją co najmniej trzy różne sposoby, aby to zrobić w Ant, ale im więcej tym weselej, prawda? (Trzecim byłoby włączenie w pełni kwalifikowanej ścieżki klasy w javacu, czwarty byłby częściową ścieżką klasową, która częściowo odwołuje się do innej ... itd.) –

+0

Aby wyjaśnić, druga nie działa, przynajmniej w miejscu 'TSA.classpath' to' '. – StockB

Powiązane problemy