2012-09-28 37 views
1

根據my previous question on programmers.SE的建議,我將當前項目分爲三個子目錄(swing,common和android),並在每個子目錄中創建單獨的Ant腳本。現在,我輕鬆地創建了NetBeans項目,並且能夠設置合適的依賴項來編譯Swing應用程序。然後,當我去使用「普通」項目中的類時,我意識到我需要爲Android構建過程創建另一個Ant腳本。使用Ant從相同的代碼庫構建Swing和Android應用程序

所以現在我有四個Ant腳本用於構建我的項目的不同部分,以及每個項目的單獨的src,test和其他支持目錄。我遇到的第一個問題是NetBeans和我的「android」項目的ant腳本都想在我的「common」項目中使用「build.xml」來執行各種構建任務,其中一些包含名稱衝突。我決定將所有這些項目合併到一個包含src,test等子目錄的目錄中。源代碼已經被組織到每個項目的單獨的包中,我認爲這會使它更簡單,因爲我可以爲Swing和Android構建包含單獨的Ant構建腳本和單獨的tragets。

現在我遇到的問題是,當我嘗試構建「android」項目時,它也想構建所有的Swing類。這帶來了很多編譯器錯誤。我甚至修改試圖從compileing排除bbct.swing包層次的<javac>任務:

 <javac encoding="${java.encoding}" 
       source="${java.source}" target="${java.target}" 
       debug="true" extdirs="" includeantruntime="false" 
       destdir="${out.classes.absolute.dir}" 
       bootclasspathref="project.target.class.path" 
       verbose="${verbose}" 
       classpathref="project.javac.classpath" 
       fork="${need.javac.fork}" 
       excludes="${source.dir}/bbct/swing/**"> <------- here 
      <src path="${source.absolute.dir}" /> 
      <src path="${gen.absolute.dir}" /> 
      <compilerarg line="${java.compilerargs}" /> 
     </javac> 

螞蟻仍然堅持我的編譯類,其使用Swing,雖然。

所以我有兩個問題:

  1. 什麼是組織這個項目的最好方法是什麼?你會建議我嘗試完成的其中一個還是其他的?

  2. 如果我堅持使用最新的解決方案,我該如何讓javac忽略項目中基於Swing的源文件?

回答

1

之間How to exclude a source package using javac in Ant?How can I exclude sources in a javac task in ant?,我發現使用<exclude>元件,而不是excludes屬性的溶液。下面是相關<javac>任務:

 <javac encoding="${java.encoding}" 
       source="${java.source}" target="${java.target}" 
       debug="true" extdirs="" includeantruntime="false" 
       destdir="${out.classes.absolute.dir}" 
       bootclasspathref="project.target.class.path" 
       verbose="${verbose}" 
       classpathref="project.javac.classpath" 
       fork="${need.javac.fork}"> 
      <src path="${source.absolute.dir}" /> 
      <exclude name="bbct/swing/**" /> 
      <src path="${gen.absolute.dir}" /> 
      <compilerarg line="${java.compilerargs}" /> 
     </javac> 

附錄:

我懷疑這個解決方案的核心在於使用相對路徑至source屬性或<src>元素。這意味着一個excludes元素應該使用相對路徑。雖然我還沒有測試過。

相關問題