在ant脚本中模块化类路径(例如通过refid)

时间:2012-02-01 17:15:12

标签: java ant build

由于我的ant文件非常复杂,我想模块化我的classpath-elements。

目前,我通过以下方式使用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(在compile.classpath中)使用path-id(<javac>)是否可以? (它目前有效,但refid确实要求元素属于同一类型。由于pathclasspath都是类似路径的结构,它们是否属于同一类型?)< / p>

1 个答案:

答案 0 :(得分:5)

我在以前的工作中成功地使用了这种方法,这实际上是我能保持一切正常的唯一方法。

我最终更进一步将所有第三方库定义放在一个单独的ext-libs.xml文件中,因为其中有几个是多jar库并且确保我在最后的战争中包含所有这些库文件变得非常麻烦。这样,在我的主build.xml(和其他人)中,我可以参考,例如,lib.jaxb,而不必担心我已经更新了文件名中的版本号。

您已经找到了扩展编译类路径以制作测试类路径的技巧,因此您处于正确的轨道上。

简而言之,按下。