ant中的每个文件依赖项

时间:2009-10-08 18:39:58

标签: ant dependencies

我有一组输入文件,每个文件都被处理以生成输出文件。在一种情况下,它将hibernate xml文件作为输入,将java文件作为输出,但这不是我必须处理的唯一情况。

在make中,我会设置一个规则来告诉它如何从.hbm.xml文件生成.java文件(模块化.hbm.xml指定要生成的不同类名),并修改单个.hbm.xml文件将触发单个.java文件的构建。

如何在ant中表达依赖关系,这样只会因为一个.hbm.xml发生变化而只构建过时的.java文件而不是所有文件?

我正在查看applyup-to-date,但尚未看到解决方案......

1 个答案:

答案 0 :(得分:2)

你看过ant-contrib outofdate task吗?

doc末尾的示例看起来像你可以使用的东西:

  <outofdate property="manual.outofdate"
             outputsources="grammer.sources">
    <sourcefiles>
      <fileset dir="${src.grammer}" includes="**/*.y"/>
    </sourcefiles>
    <mapper type="glob" dir="${src.grammer}" from="*.y" to="${gen.grammer}/*.c"/>
    <mapper type="glob" dir="${src.grammer}" from="*.y" to="${gen.grammer}/*.h"/>
    <sequential>
      <shellscript shell="bash">
        cd ${gen.grammer}
        for g in ${grammer.sources}
        do
            gengrammer $g
        done
      </shellscript>
    </sequential>
  </outofdate>

另请注意,您可以在outofdate任务的正文中使用ant-contrib "for" task

要初始化ant-contrib,请执行以下操作:

<property name="ant-contrib.jar" location="..."/>
<taskdef
  resource="net/sf/antcontrib/antlib.xml"
  uri="http://ant-contrib.sourceforge.net"
>
  <classpath>
    <pathelement location="${ant-contrib.jar}"/>
  </classpath>
</taskdef>