2012-02-01 68 views
5

由於我的ant文件非常複雜,我想模塊化我的classpath元素。在ant腳本中模塊化類路徑(例如,通過refid)

目前,我以下列方式使用refid

<path id="compile.classpath"> 
    <pathelement path="foo"/> 
    <!-- ... --> 
</path> 

<path id="test.classpath"> 
    <path refid="compile.classpath"/> 
    <pathelement path="bar"/> 
    <!-- ... --> 
</path> 

<!-- ... --> 

    <javac> 
     <classpath refid="compile.classpath"/> 
    </javac> 

    <junit> 
     <!-- ... --> 
     <classpath> 
      <path refid="test.classpath"/> 
      <path path="bazz"/> 
     </classpath> 
    </junit> 

<!-- ... --> 

這是一個明智的做法?還是有更好的?

對於classpath-refid(在<javac>)使用路徑ID(compile.classpath)可以嗎? (目前,它的工作原理,但refid確實需要的元素是同一類型的。因爲pathclasspath都是路徑狀結構,它們是同一類型的?)

回答

5

我成功地使用這種方法在以前的工作而且這確實是我能夠保持一切健全的唯一方式。

我最終進一步將所有第三方庫定義放在一個單獨的ext-libs.xml文件中,因爲其中有幾個是多jar文件庫,並確保我的所有文件都包含在我的最終戰爭文件中成爲一個巨大的麻煩。這樣,在我的主要build.xml(和其他)我可以參考,如lib.jaxb,而不必擔心,我更新了各地的文件名稱中的版本號。

你已經想出了擴展你的編譯類路徑來製作你的測試類路徑的技巧,所以你在正確的軌道上。

總之,按下。

+0

感謝您確認我的方法(+1)。由於我不想在所有地方都包含所有的第三方庫,我在路徑元素中做了幾個分組,比如compile.classpath和test.classpath,然後我可以組合和擴展它們。它的工作原理,我只是不確定是否有一些我錯過的標準解決方案。 – DaveFar 2012-02-02 13:17:04

+0

我不知道它是否標準,但它對我有用。 – Argyle 2012-02-02 18:28:19