The <relentless> task will execute all of the nested tasks, regardless of whether one or more of the nested tasks fails.
When <relentless> has completed executing the nested tasks, it will either
fail, if any one or more of the nested tasks failed; or
succeed, if all of the nested tasks succeeded.
An appropriate message will be written to the log.
Tasks are executed in the order that they appear within the <relentless> task. It is up to the user to ensure that relentless execution of the nested tasks is safe.
Table B.52: Attributes
Name | Type | Description | Default | Required |
---|---|---|---|---|
description
|
String
| A string that will be included in the log output. This can be useful for helping to identify sections of large phing builds. | N/A | No |
terse
|
Boolean
| Setting this to true will eliminate some of the progress output generated by <relentless>. This can reduce clutter in some cases. | false | No |
The only nested element supported by <relentless> is a list of tasks to be executed. At least one task must be specified.
It is important to note that <relentless> only proceeds relentlessly from one task to the next - it does not apply recursively to any tasks that might be invoked by these nested tasks. If a nested task invokes some other list of tasks (perhaps by <phingcall> for example), and one of those other tasks fails, then the nested task will stop at that point.
A relentless task to print out the first five canonical variable names:
<relentless description="The first five canonical variable names.">
<echo>foo</echo>
<echo>bar</echo>
<echo>baz</echo>
<echo>bat</echo>
<echo>blah</echo>
</relentless>
which should produce output looking more or less like
[relentless] Relentlessly executing: The first five canonical variable names. [relentless] Executing: task 1 [echo] foo [relentless] Executing: task 2 [echo] bar [relentless] Executing: task 3 [echo] baz [relentless] Executing: task 4 [echo] bat [relentless] Executing: task 5 [echo] blah [relentless] All tasks completed successfully.
If you change the first line to set the terse
parameter,
<relentless terse="true" description="The first five canonical variable names."/>
the output will look more like this:
[relentless] Relentlessly executing: The first five canonical variable names. [echo] foo [echo] bar [echo] baz [echo] bat [echo] blah [relentless] All tasks completed successfully.
If we change the third task to deliberately fail
<relentless terse="true" description="The first five canonical variable names."> <echo>foo</echo> <echo>bar</echo> <fail>baz</fail> <echo>bat</echo> <echo>blah</echo> </relentless>
then the output should look something like this.
[relentless] Relentlessly executing: The first five canonical variable names. [echo] foo [echo] bar [relentless] Task task 3 failed: baz [echo] bat [echo] blah BUILD FAILED /path/build.xml:1177: Relentless execution: 1 of 5 tasks failed.