2012-02-01 59 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