Java 仅在定义已更改时生成源文件

Java 仅在定义已更改时生成源文件,java,ant,Java,Ant,我运行一个脚本,该脚本根据定义文件生成一些java代码。如果定义文件没有更改,我希望避免运行此任务 <target name="generate" depends="init"> <exec executable="${codeGenTool-path}"> <arg value="${definitionFolder}" /> <arg value="${generatedFolder}" /> </exec> </ta

我运行一个脚本,该脚本根据定义文件生成一些java代码。如果定义文件没有更改,我希望避免运行此任务

<target name="generate" depends="init">
<exec executable="${codeGenTool-path}">
  <arg value="${definitionFolder}" />
  <arg value="${generatedFolder}" />
</exec>
</target>


但似乎我必须有一个单一的目标文件进行比较。代码生成工具创建一个包含许多源文件的文件夹。

这是from的一个很好的使用案例:

dependset
任务删除所有目标文件(如果其中任何文件比任何源文件都旧),因此我们可以使
do.generate
有条件-如果
generatedFolder
中没有文件,它将运行,这将是以前从未运行过的情况,或者生成的文件已过期

<outofdate>
  <sourcefiles>
    <fileset dir="${definitionFolder}" />
  </sourcefiles>
  <targetfiles>
    <fileset dir="${generatedFolder}" />
  </targetfiles>
  <sequential>
    <exec executable="${codeGenTool-path}">
      <arg value="${definitionFolder}" />
      <arg value="${generatedFolder}" />
    </exec>
  </sequential>
</outofdate>
<target name="generate" depends="check.generate, do.generate" />

<target name="check.generate">
  <dependset>
    <srcfileset dir="${definitionFolder}" />
    <targetfileset dir="${generatedFolder}" />
  </dependset>

  <condition property="gen.required">
    <resourcecount count="0" when="equal">
      <fileset dir="${generatedFolder}" />
    </resourcecount>
  </condition>
</target>

<target name="do.generate" if="gen.required">
  <exec ....>
</target>