2012-11-12 135 views
1

我最近開始學習ant並遇到了一些麻煩,我基本上有2個包,並且正在嘗試編譯這兩個包,但這兩個包都包含相互依賴的java文件(egajava from package1依賴於package2中的b.java,反之亦然),因此我不能編譯一個,例如下面的例子。螞蟻編譯依賴的包

<?xml version="1.0"?> 
    <project name="exampleproject" basedir="." default="compile"> 
    <property name="src1" value="package1"/>  
    <property name="src2" value="package2"/> 
    <property name="dest" value="build"/> 
    <property name="classpath" value="${dest}"/> 
<target name="clean"> 
    <delete dir="${dest}"/> 
</target> 
<target name="build" depends="clean"> 
    <mkdir dir="${dest}"/> 
</target> 
<target name="compile" depends="clean,build"> 
     <javac srcdir="${src1}" destdir="${dest}" 
     classpath="${classpath}" 
     includeantruntime="false"> 
     </javac> 
     <javac srcdir="${src2}" destdir="${dest}" 
     classpath="${classpath}" 
     includeantruntime="false"> 
     </javac> 
</target> 
</project> 

從測試這種不作爲當嘗試編譯包1,因爲在包裝2類尚未編制的構建失敗的工作,我唯一的解決辦法就是調整自己的計劃,任何人有任何更好的想法如何解決這個問題呢?

謝謝。

回答

3

根據http://ant.apache.org/manual/Tasks/javac.html

的javac的SRCDIR,類路徑,源路徑,啓動類路徑和extdirs 屬性路徑狀結構,也可以是通過嵌套 (注意不同的名字!)設置,分別

所以 和元素,你可以使用

<javac destdir="${dest}" classpath="${classpath}" includeantruntime="false"> 
    <src path="${src1}"/> 
    <src path="${src2}"/> 
    </javac> 
+0

非常感謝你解決了我的問題。 – JCS

2

您已遇到無法解決的循環依賴問題。你應該重新組織你的模塊,使其中沒有依賴循環。將聯合依賴轉移到第三個新模塊或類型通常是一個好的開始。這是模塊-XY公地如何誕生.. :-)