我为 Oracle Forms 文件的自动编译制作了一个构建文件。代码摘录如下:
<target name="build" description="compiles the source code">
...
<foreach item="File" property="filename" failonerror="false" >
<in>
<items basedir="${source.directory}\${project.type}\Forms">
<include name="*.fmb" />
</items>
</in>
<do>
<exec program="${forms.path}" workingdir="${source.directory}\${project.type}\Forms" commandline="module=${filename} userid=${username}/${password}@${database} batch=yes module_type=form compile_all=yes window_state=minimize" />
</do>
</foreach>
...
</target>
构建文件导航到包含用户希望编译的表单的目录并尝试编译每个表单。failonerror 属性设置为 false,以便在发生编译错误时构建文件不会退出。然而,不幸的是,虽然这会阻止构建文件在发生编译错误时退出,但它似乎也会使构建文件退出任务。这是一个问题,因为除非未成功编译的表单是最后一个要测试的表单(基于按字母数字降序排列的表单文件名),否则构建文件将不会尝试编译一个或多个表单. 因此,例如,如果包含要编译的表单的文件夹包含 10 个表单,而第一个表单没有编译成功,构建文件不会尝试编译剩余的 9 个表单(即退出任务)。有没有办法让构建文件在遇到无法编译表单后尝试编译剩余的表单?提前致谢!