summaryrefslogtreecommitdiffstats
path: root/docs/manual/tasks/relentless.html
blob: b30be413451ed2724bbe3cecdfc6fb5bb36f4a3c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>Ant-contrib Tasks: Relentless</title>
  </head>

  <body>
    <h1>Relentless</h1>

    <p>The &lt;relentless&gt; task will execute all of the
    nested tasks, regardless of whether one or more of the
    nested tasks fails.  When &lt;relentless&gt; has completed
    executing the nested tasks, it will either
    <ul>
        <li>fail, if any one or more of the nested tasks failed; or
        <li>succeed, if all of the nested tasks succeeded.
    </ul>
    An appropriate message will be written to the log.
    </p>
    <P>
    Tasks are executed in the order that they appear within the
    &lt;relentless&gt; task.  It is up to the user to ensure that
    relentless execution of the
    nested tasks is safe.
    </p>
    <p><em>
      This task only works for ant version greater than or equal
      to ant 1.6.0.
      </em>
    </p>

    <h2>Parameters</h2>
    <table border="1" cellpadding="2" cellspacing="0">
      <tr>
        <th>Attribute</th>
        <th>Description</th>
        <th>Required</th>
      </tr>
      <tr>
        <td valign="top">description</td>
        <td valign="top">A string that will be included in the log output.  This
        can be useful for helping to identify sections of large Ant builds.</td>
        <td align="center" valign="top">No</td>
      </tr>
      <tr>
        <td valign="top">terse</td>
        <td valign="top">Setting this to <code>true</code> will eliminate some of the progress
        output generated by &lt;relentless&gt;.  This can reduce clutter in some
        cases.  The default value is <code>false</code>.</td>
        <td align="center" valign="top">No</td>
      </tr>
    </table>

    <h2>Nested elements</h2>

    <h3>task list</h3>

    <p>
    The only nested element supported by &lt;relentless&gt; is a list of tasks
    to be executed.  At least one task must be specified.
    </p>
    <P>
    It is important to note that &lt;relentless&gt; only proceeds relentlessly
    from one task to the next - it does <b>not</b> 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 &lt;antcall&gt; for example), and one of those other tasks fails, then the
    nested task will stop at that point.
    </p>
    
    <h3>Example</h3>
    <p>
      A relentless task to print out the first five canonical variable names:
    <blockquote>
      <pre>&lt;relentless description="The first five canonical variable names."&gt;
    &lt;echo&gt;foo&lt;/echo&gt;
    &lt;echo&gt;bar&lt;/echo&gt;
    &lt;echo&gt;baz&lt;/echo&gt;
    &lt;echo&gt;bat&lt;/echo&gt;
    &lt;echo&gt;blah&lt;/echo&gt;
&lt;/relentless&gt;</pre>
      </blockquote>
      which should produce output looking more or less like
    <blockquote>
      <pre>[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.</pre>
      </blockquote>
      </p>
      If you change the first line to set the <code>terse</code> parameter, 
      <pre>    &lt;relentless terse="true" description="The first five canonical variable names."/&gt;</pre>the
      output will look more like this:
    <blockquote>
      <pre>[relentless] Relentlessly executing: The first five canonical variable names.
     [echo] foo
     [echo] bar
     [echo] baz
     [echo] bat
     [echo] blah
[relentless] All tasks completed successfully.</pre>
      </blockquote>
      </p>
      <p>
        If we change the third task to deliberately fail
    <blockquote>
      <pre>&lt;relentless terse="true" description="The first five canonical variable names."&gt;
    &lt;echo&gt;foo&lt;/echo&gt;
    &lt;echo&gt;bar&lt;/echo&gt;
    &lt;fail&gt;baz&lt;/fail&gt;
    &lt;echo&gt;bat&lt;/echo&gt;
    &lt;echo&gt;blah&lt;/echo&gt;
&lt;/relentless&gt;</pre>
      </blockquote>
        then the output should look something like this.
    <blockquote>
      <pre>[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
/home/richter/firmware/sensor/build.xml:1177: Relentless execution: 1 of 5 tasks failed.</pre>
        </blockquote>
      </p>
    <hr>
    <p align="center">Copyright &copy; 2005 Ant-Contrib Project. All
    rights Reserved.</p>

  </body>
</html>