## org.apache.tools.ant.taskdefs
Class ExecuteOn

    java.lang.Object
      |
      +--org.apache.tools.ant.ProjectComponent
            |
            +--org.apache.tools.ant.Task
                  |
                  +--org.apache.tools.ant.taskdefs.ExecTask
                        |
                        +--org.apache.tools.ant.taskdefs.ExecuteOn

Direct Known Subclasses:
  AbstractAccessTask, Attrib, Chmod, Transform

public class ExecuteOn
extends ExecTask

Executes a given command, supplying a set of files as arguments.

Since:
  Ant 1.2
Author:
  Stefan Bodewig, Mariusz Nowostawski

Nested Class Summary
`static class` `ExecuteOn.FileDirBoth` Enumerated attribute with the values "file", "dir" and "both" for the type attribute.

Field Summary
`protected java.io.File` `destDir`
`protected java.util.Vector` `filesets`
`protected FileNameMapper` `mapper`
`protected Mapper` `mapperElement`
`protected Commandline.Marker` `srcFilePos`
`protected boolean` `srcIsFirst` Has <srcfile> been specified before <targetfile>
`protected Commandline.Marker` `targetFilePos`
`protected java.lang.String` `type`

Fields inherited from class org.apache.tools.ant.taskdefs.ExecTask
`cmdl, failOnError, newEnvironment`

Fields inherited from class org.apache.tools.ant.Task
`description, location, target, taskName, taskType, wrapper`

Fields inherited from class org.apache.tools.ant.ProjectComponent
`project`

Constructor Summary
`ExecuteOn()`

Method Summary
`void` `addDirset(DirSet set)` Adds directories to operate on.
`void` `addFilelist(FileList list)` Source files to operate upon.
`void` `addFileset(FileSet set)` Source files to operate upon.
`protected void` `checkConfiguration()` Has the user set all necessary attributes?
`Mapper` `createMapper()` Mapper to use for mapping source files to target files.
`Commandline.Marker` `createSrcfile()` Marker that indicates where the name of the source file should be put on the command line.
`Commandline.Marker` `createTargetfile()` Marker that indicates where the name of the target file should be put on the command line.
`protected java.lang.String[]` `getCommandline(java.lang.String[] srcFiles, java.io.File[] baseDirs)` Construct the command line for parallel execution.
`protected java.lang.String[]` `getCommandline(java.lang.String srcFile, java.io.File baseDir)` Construct the command line for serial execution.
`protected java.lang.String[]` `getDirs(java.io.File baseDir, DirectoryScanner ds)` Return the list of Directories from this DirectoryScanner that should be included on the command line.
`protected java.lang.String[]` `getFiles(java.io.File baseDir, DirectoryScanner ds)` Return the list of files from this DirectoryScanner that should be included on the command line.
`protected void` `runExec(Execute exe)` Run the command using the given Execute instance.
`protected void` `runParallel(Execute exe, java.util.Vector fileNames, java.util.Vector baseDirs)` Runs the command in "parallel" mode, making sure that at most maxParallel sourcefiles get passed on the command line.
`void` `setAddsourcefile(boolean b)` Whether to send the source file name on the command line.
`void` `setDest(java.io.File destDir)` The directory where target files are to be placed.
`void` `setForwardslash(boolean forwardSlash)` The source and target file names on Windows and OS/2 must use forward slash as file separator.
`void` `setMaxParallel(int max)` Limit the command line length by passing at maximum this many sourcefiles at once to the command.
`void` `setParallel(boolean parallel)` If true, run the command only once, appending all files as arguments.
`void` `setRelative(boolean relative)` Whether the filenames should be passed on the command line as absolute or relative pathnames.
`void` `setSkipEmptyFilesets(boolean skip)` If no source files have been found or are newer than their corresponding target files, do not run the command.
`void` `setType(ExecuteOn.FileDirBoth type)` Whether the command works only on files, directories or both?
`void` `setVerbose(boolean b)` Whether to print a verbose summary after execution.

Methods inherited from class org.apache.tools.ant.taskdefs.ExecTask

`addEnv, createArg, createHandler, createWatchdog, execute, getResolveExecutable, isValidOs, logFlush, maybeSetResultPropertyValue, prepareExec, resolveExecutable, runExecute, setAppend, setCommand, setDir, setError, setErrorProperty, setExecutable, setFailIfExecutionFails, setFailonerror, setInput, setInputString, setLogError, setNewenvironment, setOs, setOutput, setOutputproperty, setResolveExecutable, setResultProperty, setSpawn, setTimeout, setTimeout, setVMLauncher`

Methods inherited from class org.apache.tools.ant.Task
`getDescription, getLocation, getOwningTarget, getRuntimeConfigurableWrapper, getTaskName, getTaskType, getWrapper, handleErrorFlush, handleErrorOutput, handleFlush, handleInput, handleOutput, init, isInvalid, log, log, maybeConfigure, perform, reconfigure, setDescription, setLocation, setOwningTarget, setRuntimeConfigurableWrapper, setTaskName, setTaskType`

Methods inherited from class org.apache.tools.ant.ProjectComponent
`getProject, setProject`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### filesets

    protected java.util.Vector filesets

### type

    protected java.lang.String type

### srcFilePos

    protected Commandline.Marker srcFilePos

### targetFilePos

    protected Commandline.Marker targetFilePos

### mapperElement

    protected Mapper mapperElement

### mapper

    protected FileNameMapper mapper

### destDir

    protected java.io.File destDir

### srcIsFirst

    protected boolean srcIsFirst

  Has <srcfile> been specified before <targetfile>

Constructor Detail

### ExecuteOn

    public ExecuteOn()

Method Detail

### addFileset

    public void addFileset(FileSet set)

  Source files to operate upon.

### addDirset

    public void addDirset(DirSet set)

  Adds directories to operate on.

  Parameters:
    `set` - the DirSet to add.
  Since:
    Ant 1.6

### addFilelist

    public void addFilelist(FileList list)

  Source files to operate upon.

### setRelative

    public void setRelative(boolean relative)

  Whether the filenames should be passed on the command line as absolute or relative pathnames. Paths are relative to the base directory of the corresponding fileset for source files or the dest attribute for target files.

### setParallel

    public void setParallel(boolean parallel)

  If true, run the command only once, appending all files as arguments. If false, command will be executed once for every file. Defaults to false.

### setType

    public void setType(ExecuteOn.FileDirBoth type)

  Whether the command works only on files, directories or both?

### setSkipEmptyFilesets

    public void setSkipEmptyFilesets(boolean skip)

  If no source files have been found or are newer than their corresponding target files, do not run the command.

### setDest

    public void setDest(java.io.File destDir)

  The directory where target files are to be placed.

### setForwardslash

    public void setForwardslash(boolean forwardSlash)

  The source and target file names on Windows and OS/2 must use forward slash as file separator.

### setMaxParallel

    public void setMaxParallel(int max)

  Limit the command line length by passing at maximum this many sourcefiles at once to the command.

  Set to <= 0 for unlimited - this is the default.

  Since:
    Ant 1.6

### setAddsourcefile

    public void setAddsourcefile(boolean b)

  Whether to send the source file name on the command line.

  Defaults to `true`.

  Since:
    Ant 1.6

### setVerbose

    public void setVerbose(boolean b)

  Whether to print a verbose summary after execution.

  Since:
    Ant 1.6

### createSrcfile

    public Commandline.Marker createSrcfile()

  Marker that indicates where the name of the source file should be put on the command line.

### createTargetfile

    public Commandline.Marker createTargetfile()

  Marker that indicates where the name of the target file should be put on the command line.

### createMapper

    public Mapper createMapper()
                        throws BuildException

  Mapper to use for mapping source files to target files.

    `BuildException`

### checkConfiguration

    protected void checkConfiguration()

  Description copied from class: `ExecTask`
  Has the user set all necessary attributes?

  Overrides:
    `checkConfiguration` in class `ExecTask`
  To do:
    using taskName here is brittle, as a user could override it. this should probably be modified to use the classname instead.

### runExec

    protected void runExec(Execute exe)
                    throws BuildException

  Description copied from class: `ExecTask`
  Run the command using the given Execute instance. This may be overridden by subclasses

  Overrides:
    `runExec` in class `ExecTask`
  Parameters:
    `exe` - instance of Execute to run
  Throws:
    `BuildException` - if the new process could not be started only if failIfExecFails is set to true (the default)

### getCommandline

    protected java.lang.String[] getCommandline(java.lang.String[] srcFiles,
                                                java.io.File[] baseDirs)

  Construct the command line for parallel execution.

  Parameters:
    `srcFiles` - The filenames to add to the commandline
    `baseDirs` - filenames are relative to this dir

### getCommandline

    protected java.lang.String[] getCommandline(java.lang.String srcFile,
                                                java.io.File baseDir)

  Construct the command line for serial execution.

  Parameters:
    `srcFile` - The filename to add to the commandline
    `baseDir` - filename is relative to this dir

### getFiles

    protected java.lang.String[] getFiles(java.io.File baseDir,
                                          DirectoryScanner ds)

  Return the list of files from this DirectoryScanner that should be included on the command line.

### getDirs

    protected java.lang.String[] getDirs(java.io.File baseDir,
                                         DirectoryScanner ds)

  Return the list of Directories from this DirectoryScanner that should be included on the command line.

### runParallel

    protected void runParallel(Execute exe,
                               java.util.Vector fileNames,
                               java.util.Vector baseDirs)
                        throws java.io.IOException,
                               BuildException

  Runs the command in "parallel" mode, making sure that at most maxParallel sourcefiles get passed on the command line.

    `java.io.IOException`
    `BuildException`
  Since:
    Ant 1.6

Copyright © 2000-2003 Apache Software Foundation. All Rights Reserved.