2009-04-06 32 views
41

Tôi có tệp xây dựng Apache Ant với lệnh <javac> yêu cầu bốn JAR cụ thể để xây dựng classpath. Tôi đã cố gắng thực hiện điều này:Nhận Ant <javac> để nhận dạng đường dẫn lớp

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

… nhưng không có tệp nào được chỉ định trong TSA.classpath xuất hiện để hiển thị. Làm cách nào để đưa các tệp này vào đường dẫn lớp của tôi?

Trả lời

67

Dưới đây là một ví dụ từ một dự án Tôi hiện đang làm việc trên. Tôi nghi ngờ bạn có thể sửa đổi nó để làm việc cho tình hình của bạ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

Tôi đang xác định ' ...' từ tệp XML và sau đó sử dụng '' để gọi một tệp XML khác biết cách xây dựng các lớp của tôi, nếu id đường dẫn được định nghĩa trong XML 'bên ngoài', nó hoạt động tốt, nhưng nếu được định nghĩa trong XML gọi, tôi nhận được một lỗi. XML riêng biệt và nếu có, tại sao tôi nhận được lỗi này? – Jeach

14

Hãy thử điều này:

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

Hãy thử

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

hoặc

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

Điều đáng đọc này sau khi được chọn là Câu trả lời hay nhất (bởi @William Brendel). Cảm ơn :) –

+0

Nó vẫn còn khá buồn có ít nhất ba cách khác nhau để làm điều này trong Ant, nhưng càng nhiều càng tốt, phải không? (Một phần ba sẽ bao gồm một classpath đủ điều kiện trong javac, thứ tư sẽ là tạo một classpath một phần mà tham khảo một phần khác ... vv) –

+0

Chỉ cần làm rõ, thứ hai không hoạt động, ít nhất là ở đâu 'TSA.classpath' là một' '. – StockB

Các vấn đề liên quan