OracleFormsファイルの自動コンパイル用のビルドファイルを作成しました。コードの抜粋は次のとおりです。
<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に設定されているため、コンパイルエラーが発生した場合にビルドファイルは終了しません。残念ながら、これにより、コンパイルエラーが発生したときにビルドファイルが終了できなくなりますが、ビルドファイルがタスクを終了するようにも見えます。これは問題です。正常にコンパイルされないフォームが最後にテストされる場合を除いて(英数字の降順のフォームのファイル名に基づく)、ビルドファイルがコンパイルを試行しないフォームが1つ以上存在するためです。 。したがって、たとえば、コンパイルするフォームを含むフォルダーに10個のフォームが含まれていて、最初のフォームが正常にコンパイルされない場合、ビルドファイルは、残りの9つのフォームをコンパイルしようとはしません(つまり、タスクを終了します)。フォームのコンパイルに失敗した後に遭遇した後、ビルドファイルが残りのフォームのコンパイルを試みるようにする方法はありますか?前もって感謝します!