ant中的每个文件依赖关系
我有一组输入文件,每个文件都经过处理以生成一个输出文件。有一种情况是HibernateXML文件作为输入,java文件作为输出,但这不是我必须处理的唯一情况 在make中,我会设置一个规则,告诉它如何从.hbm.xml文件生成.java文件(对.hbm.xml进行模块化,指定要生成的不同类名),修改单个.hbm.xml文件将触发单个.java文件的生成 我如何在ant中表达依赖关系,以便它只构建过时的.java文件,而不是仅仅因为一个.hbm.xml发生了变化就构建所有这些文件 我正在查看ant中的每个文件依赖关系,ant,dependencies,Ant,Dependencies,我有一组输入文件,每个文件都经过处理以生成一个输出文件。有一种情况是HibernateXML文件作为输入,java文件作为输出,但这不是我必须处理的唯一情况 在make中,我会设置一个规则,告诉它如何从.hbm.xml文件生成.java文件(对.hbm.xml进行模块化,指定要生成的不同类名),修改单个.hbm.xml文件将触发单个.java文件的生成 我如何在ant中表达依赖关系,以便它只构建过时的.java文件,而不是仅仅因为一个.hbm.xml发生了变化就构建所有这些文件 我正在查看应用和
应用
和最新的
,但还没有看到解决方案…您看过吗
文档末尾的示例类似于您可以使用的内容:
<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>
因此,每次在构建中,您都会为每个.hbx.xml文件生成一个新的.java文件,并且因为Ant将更改时间戳视为新的,所以所有.java文件的构建都会被触发。这是正确的吗?这种情况也会发生,但第一步是只生成需要修改的.java文件;我不希望构建做得比它必须做的更多。只是澄清一下,如果源的子集已过期,则名为
outputsources
的属性将设置为仅包含这些源而不是所有源的列表,对吗?对,outputsources
仅列出比相应目标更新的源。
<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>