Получение Ant ‹javac› для распознавания пути к классам

У меня есть файл сборки Apache Ant с командой <javac>, для которой требуется, чтобы в сборке classpath были четыре определенных JAR-файла. Я пробовал это сделать:

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

… Но ни один из файлов, указанных в TSA.classpath, не отображается. Как мне включить эти файлы в мой путь к классам?


person Paul Fisher    schedule 06.04.2009    source источник


Ответы (3)


Вот пример из проекта, над которым я сейчас работаю. Я подозреваю, что вы можете изменить его, чтобы он работал в вашей ситуации.

<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>
person William Brendel    schedule 06.04.2009
comment
Я определяю «‹ path id = 'myID' ›... ‹/path›» из XML-файла, а затем использую «‹ antfile = external.xml target = all inheritall = true ›» для вызова другого XML-файла. который знает, как создавать мои классы. Если идентификатор пути определен во «внешнем» XML, он работает нормально, но если он определен в вызывающем XML, я получаю сообщение об ошибке. Знаете ли вы, могут ли они быть в отдельных XML-файлах, и если да, то почему я получаю эту ошибку? - person Jeach; 29.05.2012

Пытаться

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

or

<javac ...>
    ...
    <classpath refid="TSA.classpath" />
</javac>
person Joachim Sauer    schedule 06.04.2009
comment
Это стоит прочитать после того, который был выбран в качестве лучшего ответа (@William Brendel). Спасибо :) - person ; 14.09.2012
comment
Все же довольно грустно, что в Ant есть как минимум три разных способа сделать это, но чем больше, тем лучше, не так ли? (Третьим было бы включение полностью определенного пути к классам в javac, четвертым было бы создание частичного пути к классам, который частично ссылается на другой ... и т. Д.) - person ; 14.09.2012
comment
Чтобы уточнить, второй не работает, по крайней мере, где TSA.classpath - это <fileset>. - person StockB; 30.04.2013

Попробуй это:

 <classpath refid="TSA.classpath"/>
person TofuBeer    schedule 06.04.2009