org.apache.tools.ant.taskdefs

Class ExecuteOn

public class ExecuteOn extends ExecTask

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

Since: Ant 1.2

UNKNOWN: category="control" name="apply"

Nested Class Summary
static classExecuteOn.FileDirBoth
Enumerated attribute with the values "file", "dir" and "both" for the type attribute.
Field Summary
protected FiledestDir
protected Vectorfilesets
protected FileNameMappermapper
protected MappermapperElement
protected Commandline.MarkersrcFilePos
protected booleansrcIsFirst
Has <srcfile> been specified before <targetfile>
protected Commandline.MarkertargetFilePos
protected Stringtype
Method Summary
voidadd(FileNameMapper fileNameMapper)
Add a nested FileNameMapper.
voidaddDirset(DirSet set)
Add a set of directories upon which to operate.
voidaddFilelist(FileList list)
Add a list of source files upon which to operate.
voidaddFileset(FileSet set)
Add a set of files upon which to operate.
protected voidcheckConfiguration()
Check the configuration of this ExecuteOn instance.
protected ExecuteStreamHandlercreateHandler()
Create the ExecuteStreamHandler instance that will be used during execution.
MappercreateMapper()
Create a nested Mapper element to use for mapping source files to target files.
Commandline.MarkercreateSrcfile()
Create a placeholder indicating where on the command line the name of the source file should be inserted.
Commandline.MarkercreateTargetfile()
Create a placeholder indicating where on the command line the name of the target file should be inserted.
protected String[]getCommandline(String[] srcFiles, File[] baseDirs)
Construct the command line for parallel execution.
protected String[]getCommandline(String srcFile, File baseDir)
Construct the command line for serial execution.
protected String[]getDirs(File baseDir, DirectoryScanner ds)
Return the list of Directories from this DirectoryScanner that should be included on the command line.
protected String[]getFiles(File baseDir, DirectoryScanner ds)
Return the list of files from this DirectoryScanner that should be included on the command line.
protected String[]getFilesAndDirs(FileList list)
Return the list of files or directories from this FileList that should be included on the command line.
protected voidrunExec(Execute exe)
Run the specified Execute object.
protected voidrunParallel(Execute exe, Vector fileNames, Vector baseDirs)
Run the command in "parallel" mode, making sure that at most maxParallel sourcefiles get passed on the command line.
voidsetAddsourcefile(boolean b)
Set whether to send the source file name on the command line.
voidsetDest(File destDir)
Specify the directory where target files are to be placed.
voidsetForce(boolean b)
Set whether to bypass timestamp comparisons for target files.
voidsetForwardslash(boolean forwardSlash)
Set whether the source and target file names on Windows and OS/2 must use the forward slash as file separator.
voidsetIgnoremissing(boolean b)
Set whether to ignore nonexistent files from filelists.
voidsetMaxParallel(int max)
Limit the command line length by passing at maximum this many sourcefiles at once to the command.
voidsetParallel(boolean parallel)
Set whether to execute in parallel mode.
voidsetRelative(boolean relative)
Set whether the filenames should be passed on the command line as absolute or relative pathnames.
voidsetSkipEmptyFilesets(boolean skip)
Set whether empty filesets will be skipped.
voidsetType(ExecuteOn.FileDirBoth type)
Set whether the command works only on files, directories or both.
protected voidsetupRedirector()
Set up the I/O Redirector.
voidsetVerbose(boolean b)
Set whether to operate in verbose mode.

Field Detail

destDir

protected File destDir

filesets

protected Vector filesets

mapper

protected FileNameMapper mapper

mapperElement

protected Mapper mapperElement

srcFilePos

protected Commandline.Marker srcFilePos

srcIsFirst

protected boolean srcIsFirst
Has <srcfile> been specified before <targetfile>

targetFilePos

protected Commandline.Marker targetFilePos

type

protected String type

Method Detail

add

public void add(FileNameMapper fileNameMapper)
Add a nested FileNameMapper.

Parameters: fileNameMapper the mapper to add.

Since: Ant 1.6.3

addDirset

public void addDirset(DirSet set)
Add a set of directories upon which to operate.

Parameters: set the DirSet to add.

Since: Ant 1.6

addFilelist

public void addFilelist(FileList list)
Add a list of source files upon which to operate.

Parameters: list the FileList to add.

addFileset

public void addFileset(FileSet set)
Add a set of files upon which to operate.

Parameters: set the FileSet to add.

checkConfiguration

protected void checkConfiguration()
Check the configuration of this ExecuteOn instance.

createHandler

protected ExecuteStreamHandler createHandler()
Create the ExecuteStreamHandler instance that will be used during execution.

Returns: ExecuteStreamHandler.

Throws: BuildException on error.

createMapper

public Mapper createMapper()
Create a nested Mapper element to use for mapping source files to target files.

Returns: Mapper.

Throws: BuildException if more than one mapper is defined.

createSrcfile

public Commandline.Marker createSrcfile()
Create a placeholder indicating where on the command line the name of the source file should be inserted.

Returns: Commandline.Marker.

createTargetfile

public Commandline.Marker createTargetfile()
Create a placeholder indicating where on the command line the name of the target file should be inserted.

Returns: Commandline.Marker.

getCommandline

protected String[] getCommandline(String[] srcFiles, 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.

Returns: the command line in the form of a String[].

getCommandline

protected String[] getCommandline(String srcFile, 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.

Returns: the command line in the form of a String[].

getDirs

protected String[] getDirs(File baseDir, DirectoryScanner ds)
Return the list of Directories from this DirectoryScanner that should be included on the command line.

Parameters: baseDir the File base directory. ds the DirectoryScanner to use for file scanning.

Returns: a String[] containing the directory names.

getFiles

protected String[] getFiles(File baseDir, DirectoryScanner ds)
Return the list of files from this DirectoryScanner that should be included on the command line.

Parameters: baseDir the File base directory. ds the DirectoryScanner to use for file scanning.

Returns: a String[] containing the filenames.

getFilesAndDirs

protected String[] getFilesAndDirs(FileList list)
Return the list of files or directories from this FileList that should be included on the command line.

Parameters: list the FileList to check.

Returns: a String[] containing the directory names.

Since: Ant 1.6.2

runExec

protected void runExec(Execute exe)
Run the specified Execute object.

Parameters: exe the Execute instance representing the external process.

Throws: BuildException on error

runParallel

protected void runParallel(Execute exe, Vector fileNames, Vector baseDirs)
Run the command in "parallel" mode, making sure that at most maxParallel sourcefiles get passed on the command line.

Parameters: exe the Executable to use. fileNames the Vector of filenames. baseDirs the Vector of base directories corresponding to fileNames.

Throws: IOException on I/O errors. BuildException on other errors.

Since: Ant 1.6

setAddsourcefile

public void setAddsourcefile(boolean b)
Set whether to send the source file name on the command line.

Defaults to true.

Parameters: b whether to add the source file to the command line.

Since: Ant 1.6

setDest

public void setDest(File destDir)
Specify the directory where target files are to be placed.

Parameters: destDir the File object representing the destination directory.

setForce

public void setForce(boolean b)
Set whether to bypass timestamp comparisons for target files.

Parameters: b whether to bypass timestamp comparisons.

Since: Ant 1.6.3

setForwardslash

public void setForwardslash(boolean forwardSlash)
Set whether the source and target file names on Windows and OS/2 must use the forward slash as file separator.

Parameters: forwardSlash whether the forward slash will be forced.

setIgnoremissing

public void setIgnoremissing(boolean b)
Set whether to ignore nonexistent files from filelists.

Parameters: b whether to ignore missing files.

Since: Ant 1.6.2

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.

Parameters: max int maximum number of sourcefiles passed to the executable.

Since: Ant 1.6

setParallel

public void setParallel(boolean parallel)
Set whether to execute in parallel mode. 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.

Parameters: parallel whether to run in parallel.

setRelative

public void setRelative(boolean relative)
Set 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.

Parameters: relative whether to pass relative pathnames.

setSkipEmptyFilesets

public void setSkipEmptyFilesets(boolean skip)
Set whether empty filesets will be skipped. If true and no source files have been found or are newer than their corresponding target files, the command will not be run.

Parameters: skip whether to skip empty filesets.

setType

public void setType(ExecuteOn.FileDirBoth type)
Set whether the command works only on files, directories or both.

Parameters: type a FileDirBoth EnumeratedAttribute.

setupRedirector

protected void setupRedirector()
Set up the I/O Redirector.

setVerbose

public void setVerbose(boolean b)
Set whether to operate in verbose mode. If true, a verbose summary will be printed after execution.

Parameters: b whether to operate in verbose mode.

Since: Ant 1.6

Copyright