gpt4 book ai didi

java - 仅当定义已更改时才生成源文件

转载 作者:太空宇宙 更新时间:2023-11-04 06:52:31 24 4
gpt4 key购买 nike

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

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

我查看了http://ant.apache.org/manual/Tasks/uptodate.html但看来我必须有一个目标文件来比较。代码生成工具创建一个包含许多源文件的文件夹。

最佳答案

这是 outofdate task 的一个很好的用例来自ant-contrib :

<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>

这将检查 definitionFolder 下的每个文件与 generateFolder 下的每个文件 - 您可能希望更严格地约束文件集,例如与 includes="**/*.def" 或任何相关的文件扩展名。

或者,如果您想避免“第三方”任务,则可以使用 dependset 任务根据源文件检查目标文件。

<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>

如果任何目标文件比任何源文件都旧,则dependset任务将删除所有目标文件,因此我们可以将do.generate设置为有条件的 - 如果 generatedFolder 中没有文件,它将运行,如果以前从未运行过,或者生成的文件已过时,就会出现这种情况。

关于java - 仅当定义已更改时才生成源文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23153647/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com