有关<foreach>任务和failonerror属性</foreach>的问题

时间:2010-05-24 06:45:31

标签: nant oracleforms

我已经为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个表单(即退出任务)。有没有办法让构建文件尝试在遇到无法编译表单后遇到剩余的表单?提前谢谢!

1 个答案:

答案 0 :(得分:0)

道歉,这已经解决了。问题是你需要在任务中设置“failonerror”。