<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <!-- Documenting T:NAnt.Core.Tasks.CallTask-->
  <head>
    <meta http-equiv="Content-Language" content="en-ca" />
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <link rel="stylesheet" type="text/css" href="../style.css" />
    <title>&lt;call&gt; Task</title>
  </head>
  <body>
    <table width="100%" border="0" cellspacing="0" cellpadding="2" class="NavBar">
      <tr>
        <td class="NavBar-Cell">
          <a href="http://nant.sourceforge.net">
            <b>NAnt</b>
          </a>
          <img alt="-&gt;" src="../images/arrow.gif" />
          <a href="../index.html">Help</a>
          <img alt="-&gt;" src="../images/arrow.gif" />
          <a href="../tasks/index.html">Task Reference</a>
          <img alt="-&gt;" src="../images/arrow.gif" /> &lt;call&gt;</td>
        <td class="NavBar-Cell" align="right">
                        v0.91</td>
      </tr>
    </table>
    <h1>&lt;call&gt;</h1>
    <p> Calls a NAnt target in the current project. </p>
    <p> When the <a href="../tasks/call.html">&lt;call&gt;</a> task is used to execute a target, both that target and all its dependent targets will be re-executed. </p>
    <p> To avoid dependent targets from being executed more than once, two options are available: </p>
    <ul style="list-style-type: disc;">
      <li> Add an "unless" attribute with value "${<a href="../functions/target.has-executed.html">target::has-executed</a>('<code>&lt;target name&gt;</code>')}" to the dependent targets. </li>
      <li> Set the <code>cascade</code> attribute on the <a href="../tasks/call.html">&lt;call&gt;</a> task to <b>false</b> (<code>recommended</code>). </li>
    </ul>
    <h3>Parameters</h3>
    <div class="table">
      <table>
        <tr>
          <th>Attribute</th>
          <th style="text-align: center;">Type</th>
          <th>Description</th>
          <th style="text-align: center;">Required</th>
        </tr>
        <tr>
          <td valign="top" class="required">target</td>
          <td style="text-align: center;">string</td>
          <td> NAnt target to call. </td>
          <td style="text-align: center;">True</td>
        </tr>
        <tr>
          <td valign="top">cascade</td>
          <td style="text-align: center;">bool</td>
          <td> Execute the specified targets dependencies -- even if they have been previously executed. The default is <b>true</b>. </td>
          <td style="text-align: center;">False</td>
        </tr>
        <tr>
          <td valign="top">force</td>
          <td style="text-align: center;">bool</td>
          <td>
            <i>Deprecated.</i>  Force an execute even if the target has already been executed. The default is <b>false</b>. </td>
          <td style="text-align: center;">False</td>
        </tr>
        <tr>
          <td valign="top">failonerror</td>
          <td style="text-align: center;">bool</td>
          <td> Determines if task failure stops the build, or is just reported. The default is <b>true</b>. </td>
          <td style="text-align: center;">False</td>
        </tr>
        <tr>
          <td valign="top">if</td>
          <td style="text-align: center;">bool</td>
          <td> If <b>true</b> then the task will be executed; otherwise, skipped. The default is <b>true</b>. </td>
          <td style="text-align: center;">False</td>
        </tr>
        <tr>
          <td valign="top">unless</td>
          <td style="text-align: center;">bool</td>
          <td> Opposite of <code>if</code>. If <b>false</b> then the task will be executed; otherwise, skipped. The default is <b>false</b>. </td>
          <td style="text-align: center;">False</td>
        </tr>
        <tr>
          <td valign="top">verbose</td>
          <td style="text-align: center;">bool</td>
          <td> Determines whether the task should report detailed build log messages. The default is <b>false</b>. </td>
          <td style="text-align: center;">False</td>
        </tr>
      </table>
    </div>
    <h3>Examples</h3>
    <ul class="examples">
      <li>
        <p> Call the target "build". </p>
        <pre class="code">
&lt;call target="build" /&gt;
    </pre>
      </li>
      <li>
        <p> This shows how a project could 'compile' a debug and release build using a common compile target. </p>
        <pre class="code">
&lt;project default="build"&gt;
    &lt;property name="debug" value="false" /&gt;
    &lt;target name="init"&gt;
        &lt;echo message="initializing" /&gt;
    &lt;/target&gt;
    &lt;target name="compile" depends="init"&gt;
        &lt;echo message="compiling with debug = ${debug}" /&gt;
    &lt;/target&gt;
    &lt;target name="build"&gt;
        &lt;property name="debug" value="false" /&gt;
        &lt;call target="compile" /&gt;
        &lt;property name="debug" value="true" /&gt;
        &lt;call target="compile" /&gt;
    &lt;/target&gt;
&lt;/project&gt;
    </pre>
        <p> The <code>cascade</code> parameter of the <a href="../tasks/call.html">&lt;call&gt;</a> task defaults to <b>true</b>, causing the "init" target to be executed for both the "debug" and "release" build. </p>
        <p> This results in the following build log: </p>
        <pre class="code">build:
  
init:
                [echo] initializing
    
compile:

    [echo] compiling with debug = false
    
init:

    [echo] initializing
    
compile:

    [echo] compiling with debug = true
    
BUILD SUCCEEDED
  </pre>
        <p> If the "init" should only be executed once, set the <code>cascade</code> attribute of the <a href="../tasks/call.html">&lt;call&gt;</a> task to <b>false</b>. </p>
        <p> The build log would then look like this: </p>
        <pre class="code">build:
  
init:
                [echo] initializing
    
compile:

    [echo] compiling with debug = false
    
compile:

    [echo] compiling with debug = true
    
BUILD SUCCEEDED
  </pre>
      </li>
    </ul>
    <h3>Requirements</h3>
    <div style="margin-left: 20px;">
      <b>Assembly:</b> NAnt.Core (0.91.4312.0)
            </div>
  </body>
</html>