org.apache.tools.ant.taskdefs
public class: DependSet [javadoc |
source]
java.lang.Object
org.apache.tools.ant.ProjectComponent
org.apache.tools.ant.Task
org.apache.tools.ant.taskdefs.MatchingTask
org.apache.tools.ant.taskdefs.DependSet
All Implemented Interfaces:
SelectorContainer, Cloneable
Examines and removes out of date target files. If any of the target files
are out of date with respect to any of the source files, all target
files are removed. This is useful where dependencies cannot be
computed (for example, dynamically interpreted parameters or files
that need to stay in synch but are not directly linked) or where
the ant task in question could compute them but does not (for
example, the linked DTD for an XML file using the XSLT task).
nested arguments:
- sources (resource union describing the source resources to examine)
- srcfileset (fileset describing the source files to examine)
- srcfilelist (filelist describing the source files to examine)
- targets (path describing the target files to examine)
- targetfileset (fileset describing the target files to examine)
- targetfilelist (filelist describing the target files to examine)
At least one of both source and target entities is required.
This task will examine each of the sources against each of the target files. If
any target files are out of date with respect to any of the sources, all targets
are removed. If any sources or targets do not exist, all targets are removed.
Hint: If missing files should be ignored, specify them as include patterns
in filesets, rather than using filelists.
This task attempts to optimize speed of dependency checking
by comparing only the dates of the oldest target file and the newest source.
Example uses:
-
Record the fact that an XML file must be up to date with respect to its XSD
(Schema file), even though the XML file itself includes no reference to its XSD.
-
Record the fact that an XSL stylesheet includes other sub-stylesheets
-
Record the fact that java files must be recompiled if the ant build file changes
- ant.task:
category - ="filesystem"
- since:
Ant - 1.4
| Methods from org.apache.tools.ant.taskdefs.MatchingTask: |
|---|
|
XsetIgnore, XsetItems, add, addAnd, addContains, addContainsRegexp, addCustom, addDate, addDepend, addDepth, addDifferent, addFilename, addMajority, addModified, addNone, addNot, addOr, addPresent, addSelector, addSize, addType, appendSelector, createExclude, createExcludesFile, createInclude, createIncludesFile, createPatternSet, getDirectoryScanner, getImplicitFileSet, getSelectors, hasSelectors, selectorCount, selectorElements, setCaseSensitive, setDefaultexcludes, setExcludes, setExcludesfile, setFollowSymlinks, setIncludes, setIncludesfile, setProject |
| Methods from org.apache.tools.ant.Task: |
|---|
|
bindToOwner, execute, getOwningTarget, getRuntimeConfigurableWrapper, getTaskName, getTaskType, getWrapper, handleErrorFlush, handleErrorOutput, handleFlush, handleInput, handleOutput, init, isInvalid, log, log, log, log, markInvalid, maybeConfigure, perform, reconfigure, setOwningTarget, setRuntimeConfigurableWrapper, setTaskName, setTaskType |
| Method from org.apache.tools.ant.taskdefs.DependSet Detail: |
public void addSrcfilelist(FileList fl) {
createSources().add(fl);
}
Add a list of source files. |
public void addSrcfileset(FileSet fs) {
createSources().add(fs);
}
Add a set of source files. |
public void addTargetfilelist(FileList fl) {
createTargets().add(fl);
}
Add a list of target files. |
public void addTargetfileset(FileSet fs) {
createTargets().add(new HideMissingBasedir(fs));
}
Add a set of target files. |
public synchronized Union createSources() {
sources = (sources == null) ? new Union() : sources;
return sources;
}
Create a nested sources element. |
public synchronized Path createTargets() {
targets = (targets == null) ? new Path(getProject()) : targets;
return targets;
}
Create a nested targets element. |
public void execute() throws BuildException {
if (sources == null) {
throw new BuildException(
"At least one set of source resources must be specified");
}
if (targets == null) {
throw new BuildException(
"At least one set of target files must be specified");
}
//no sources = nothing to compare; no targets = nothing to delete:
if (sources.size() > 0 && targets.size() > 0 && !uptodate(sources, targets)) {
log("Deleting all target files.", Project.MSG_VERBOSE);
Delete delete = new Delete();
delete.bindToOwner(this);
delete.add(targets);
delete.perform();
}
}
|