org.apache.tools.ant

## Class Task

- java.lang.Object
- - org.apache.tools.ant.ProjectComponent
  - - org.apache.tools.ant.Task

- All Implemented Interfaces:
    java.lang.Cloneable
  Direct Known Subclasses:
    AbstractCvsTask, AbstractJarSignerTask, Ant, Antlib, AntlibDefinition, ANTLR, AntStructure, AntVersion, AugmentReference, Available, Basename, BindTargets, BorlandGenerateClient, BuildNumber, CallTarget, Classloader, ClearCase, CloseResources, Concat, Continuus, Copy, Copyfile, CopyPath, CVSPass, DefaultExcludes, Deltree, DiagnosticsTask, Dirname, DispatchTask, Echo, EchoProperties, EmailTask, Exec, ExecTask, Exit, Expand, Filter, FTP, FTPTask, Funtest, GenerateKey, Get, HostInfo, ImportTask, Input, IPlanetEjbcTask, JarLibAvailableTask, JarLibDisplayTask, JarLibManifestTask, JarLibResolveTask, Java, JavaCC, Javadoc, Javah, JDBCTask, JDependTask, JJDoc, JJTree, JUnitTask, KeySubst, Length, LoadProperties, LoadResource, Local, MacroInstance, MakeUrl, ManifestClassPath, ManifestTask, MatchingTask, Mkdir, MSVSS, Nice, P4Base, Pack, Parallel, Patch, PathConvert, ProjectHelperTask, Property, PropertyFile, PropertyHelperTask, Pvcs, Recorder, Rename, ReplaceRegExp, ResourceCount, Retry, RExecTask, Rpm, Script, ScriptDefBase, Sequential, ServerDeploy, SetProxy, Sleep, SOS, SoundTask, SplashTask, SSHBase, SubAnt, Sync, TaskAdapter, TelnetTask, TempFile, Touch, Truncate, Tstamp, UnknownElement, Unpack, UpToDate, WhichResource, XmlProperty, XMLResultAggregator, XMLValidateTask

      public abstract class Task
      extends ProjectComponent

  Base class for all tasks. Use Project.createTask to create a new task instance rather than using this class directly for construction.
  See Also:
    `Project.createTask(java.lang.String)`

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected Target` | `target` Deprecated. since 1.6.x. You should not be accessing this variable directly. Please use the `getOwningTarget()` method.
    `protected java.lang.String` | `taskName` Deprecated. since 1.6.x. You should not be accessing this variable directly. Please use the `getTaskName()` method.
    `protected java.lang.String` | `taskType` Deprecated. since 1.6.x. You should not be accessing this variable directly. Please use the `getTaskType()` method.
    `protected RuntimeConfigurable` | `wrapper` Deprecated. since 1.6.x. You should not be accessing this variable directly. Please use the `getWrapper()` method.

    - ### Fields inherited from class org.apache.tools.ant.ProjectComponent

      `description, location, project`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `Task()` Sole constructor.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `bindToOwner(Task owner)` Bind a task to another; use this when configuring a newly created task to do work on behalf of another.
    `void` | `execute()` Called by the project to let the task do its work.
    `Target` | `getOwningTarget()` Returns the container target of this task.
    `RuntimeConfigurable` | `getRuntimeConfigurableWrapper()` Returns the wrapper used for runtime configuration.
    `java.lang.String` | `getTaskName()` Returns the name to use in logging messages.
    `java.lang.String` | `getTaskType()` Return the type of task.
    `protected RuntimeConfigurable` | `getWrapper()` Return the runtime configurable structure for this task.
    `protected void` | `handleErrorFlush(java.lang.String output)` Handles an error line by logging it with the WARN priority.
    `protected void` | `handleErrorOutput(java.lang.String output)` Handles an error output by logging it with the WARN priority.
    `protected void` | `handleFlush(java.lang.String output)` Handles output by logging it with the INFO priority.
    `protected int` | `handleInput(byte[] buffer, int offset, int length)` Handle an input request by this task.
    `protected void` | `handleOutput(java.lang.String output)` Handles output by logging it with the INFO priority.
    `void` | `init()` Called by the project to let the task initialize properly.
    `protected boolean` | `isInvalid()` Has this task been marked invalid?
    `void` | `log(java.lang.String msg)` Logs a message with the default (INFO) priority.
    `void` | `log(java.lang.String msg, int msgLevel)` Logs a message with the given priority.
    `void` | `log(java.lang.String msg, java.lang.Throwable t, int msgLevel)` Logs a message with the given priority.
    `void` | `log(java.lang.Throwable t, int msgLevel)` Logs a message with the given priority.
    `void` | `maybeConfigure()` Configures this task - if it hasn't been done already.
    `void` | `perform()` Performs this task if it's still valid, or gets a replacement version and performs that otherwise.
    `void` | `reconfigure()` Force the task to be reconfigured from its RuntimeConfigurable.
    `void` | `setOwningTarget(Target target)` Sets the target container of this task.
    `void` | `setRuntimeConfigurableWrapper(RuntimeConfigurable wrapper)` Sets the wrapper to be used for runtime configuration.
    `void` | `setTaskName(java.lang.String name)` Sets the name to use in logging messages.
    `void` | `setTaskType(java.lang.String type)` Sets the name with which the task has been invoked.

    - ### Methods inherited from class org.apache.tools.ant.ProjectComponent

      `clone, getDescription, getLocation, getProject, setDescription, setLocation, setProject`

    - ### Methods inherited from class java.lang.Object

      `equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### target

          protected Target target

      Deprecated. since 1.6.x. You should not be accessing this variable directly. Please use the `getOwningTarget()` method.
      Target this task belongs to, if any.

    - #### taskName

          protected java.lang.String taskName

      Deprecated. since 1.6.x. You should not be accessing this variable directly. Please use the `getTaskName()` method.
      Name of this task to be used for logging purposes. This defaults to the same as the type, but may be overridden by the user. For instance, the name "java" isn't terribly descriptive for a task used within another task - the outer task code can probably provide a better one.

    - #### taskType

          protected java.lang.String taskType

      Deprecated. since 1.6.x. You should not be accessing this variable directly. Please use the `getTaskType()` method.
      Type of this task.

    - #### wrapper

          protected RuntimeConfigurable wrapper

      Deprecated. since 1.6.x. You should not be accessing this variable directly. Please use the `getWrapper()` method.
      Wrapper for this object, used to configure it at runtime.

  - ### Constructor Detail

    - #### Task

          public Task()

      Sole constructor.

  - ### Method Detail

    - #### setOwningTarget

          public void setOwningTarget(Target target)

      Sets the target container of this task.
      Parameters:
        `target` - Target in whose scope this task belongs. May be `null`, indicating a top-level task.

    - #### getOwningTarget

          public Target getOwningTarget()

      Returns the container target of this task.
      Returns:
        The target containing this task, or `null` if this task is a top-level task.

    - #### setTaskName

          public void setTaskName(java.lang.String name)

      Sets the name to use in logging messages.
      Parameters:
        `name` - The name to use in logging messages. Should not be `null`.

    - #### getTaskName

          public java.lang.String getTaskName()

      Returns the name to use in logging messages.
      Returns:
        the name to use in logging messages.

    - #### setTaskType

          public void setTaskType(java.lang.String type)

      Sets the name with which the task has been invoked.
      Parameters:
        `type` - The name the task has been invoked as. Should not be `null`.

    - #### init

          public void init()
                    throws BuildException

      Called by the project to let the task initialize properly. The default implementation is a no-op.
      Throws:
        `BuildException` - if something goes wrong with the build

    - #### execute

          public void execute()
                       throws BuildException

      Called by the project to let the task do its work. This method may be called more than once, if the task is invoked more than once. For example, if target1 and target2 both depend on target3, then running "ant target1 target2" will run all tasks in target3 twice.
      Throws:
        `BuildException` - if something goes wrong with the build.

    - #### getRuntimeConfigurableWrapper

          public RuntimeConfigurable getRuntimeConfigurableWrapper()

      Returns the wrapper used for runtime configuration.
      Returns:
        the wrapper used for runtime configuration. This method will generate a new wrapper (and cache it) if one isn't set already.

    - #### setRuntimeConfigurableWrapper

          public void setRuntimeConfigurableWrapper(RuntimeConfigurable wrapper)

      Sets the wrapper to be used for runtime configuration. This method should be used only by the ProjectHelper and Ant internals. It is public to allow helper plugins to operate on tasks, normal tasks should never use it.
      Parameters:
        `wrapper` - The wrapper to be used for runtime configuration. May be `null`, in which case the next call to getRuntimeConfigurableWrapper will generate a new wrapper.

    - #### maybeConfigure

          public void maybeConfigure()
                              throws BuildException

      Configures this task - if it hasn't been done already. If the task has been invalidated, it is replaced with an UnknownElement task which uses the new definition in the project.
      Throws:
        `BuildException` - if the task cannot be configured.

    - #### reconfigure

          public void reconfigure()

      Force the task to be reconfigured from its RuntimeConfigurable.

    - #### handleOutput

          protected void handleOutput(java.lang.String output)

      Handles output by logging it with the INFO priority.
      Parameters:
        `output` - The output to log. Should not be `null`.

    - #### handleFlush

          protected void handleFlush(java.lang.String output)

      Handles output by logging it with the INFO priority.
      Parameters:
        `output` - The output to log. Should not be `null`.
      Since:
        Ant 1.5.2

    - #### handleInput

          protected int handleInput(byte[] buffer,
                        int offset,
                        int length)
                             throws java.io.IOException

      Handle an input request by this task.
      Parameters:
        `buffer` - the buffer into which data is to be read.
        `offset` - the offset into the buffer at which data is stored.
        `length` - the amount of data to read.
      Returns:
        the number of bytes read.
      Throws:
        `java.io.IOException` - if the data cannot be read.
      Since:
        Ant 1.6

    - #### handleErrorOutput

          protected void handleErrorOutput(java.lang.String output)

      Handles an error output by logging it with the WARN priority.
      Parameters:
        `output` - The error output to log. Should not be `null`.

    - #### handleErrorFlush

          protected void handleErrorFlush(java.lang.String output)

      Handles an error line by logging it with the WARN priority.
      Parameters:
        `output` - The error output to log. Should not be `null`.
      Since:
        Ant 1.5.2

    - #### log

          public void log(java.lang.String msg)

      Logs a message with the default (INFO) priority.
      Overrides:
        `log` in class `ProjectComponent`
      Parameters:
        `msg` - The message to be logged. Should not be `null`.

    - #### log

          public void log(java.lang.String msg,
                 int msgLevel)

      Logs a message with the given priority. This delegates the actual logging to the project.
      Overrides:
        `log` in class `ProjectComponent`
      Parameters:
        `msg` - The message to be logged. Should not be `null`.
        `msgLevel` - The message priority at which this message is to be logged.

    - #### log

          public void log(java.lang.Throwable t,
                 int msgLevel)

      Logs a message with the given priority. This delegates the actual logging to the project.
      Parameters:
        `t` - The exception to be logged. Should not be `null`.
        `msgLevel` - The message priority at which this message is to be logged.
      Since:
        1.7

    - #### log

          public void log(java.lang.String msg,
                 java.lang.Throwable t,
                 int msgLevel)

      Logs a message with the given priority. This delegates the actual logging to the project.
      Parameters:
        `msg` - The message to be logged. Should not be `null`.
        `t` - The exception to be logged. May be `null`.
        `msgLevel` - The message priority at which this message is to be logged.
      Since:
        1.7

    - #### perform

          public final void perform()

      Performs this task if it's still valid, or gets a replacement version and performs that otherwise. Performing a task consists of firing a task started event, configuring the task, executing it, and then firing task finished event. If a runtime exception is thrown, the task finished event is still fired, but with the exception as the cause.

    - #### isInvalid

          protected final boolean isInvalid()

      Has this task been marked invalid?
      Returns:
        true if this task is no longer valid. A new task should be configured in this case.
      Since:
        Ant 1.5

    - #### getTaskType

          public java.lang.String getTaskType()

      Return the type of task.
      Returns:
        the type of task.

    - #### getWrapper

          protected RuntimeConfigurable getWrapper()

      Return the runtime configurable structure for this task.
      Returns:
        the runtime structure for this task.

    - #### bindToOwner

          public final void bindToOwner(Task owner)

      Bind a task to another; use this when configuring a newly created task to do work on behalf of another. Project, OwningTarget, TaskName, Location and Description are all copied Important: this method does not call `init()`. If you are creating a task to delegate work to, call `init()` to initialize it.
      Parameters:
        `owner` - owning target
      Since:
        Ant1.7