> > "Tardif, Sebastien" <[EMAIL PROTECTED]> wrote on 08/18/2005
> > 01:41:31 PM:
> >> This work:
> >> <copy todir="${jsp.dst.dir}">
> >> <fileset dir="${dataviewservlet.dir}/sample">
> >> <selector>
> >> <or>
> >> <filename name="DVMainLogoComponent.jsp"/>
> >> <filename name="DVHitlistLogoComponent.jsp"/>
> >> <filename name="DVHyperlinksComponent.jsp"/>
> >> </or>
> >> </selector>
> >> </fileset>
> >> </copy>
> >>
> >> But this doesn't:
> >> <copy todir="${jsp.dst.dir}">
> >> <fileset dir="${dataviewservlet.dir}/sample">
> >> <filename name="DVMainLogoComponent.jsp"/>
> >> <filename name="DVHitlistLogoComponent.jsp"/>
> >> <filename name="DVHyperlinksComponent.jsp"/>
> >> </fileset>
> >> </copy>
> >>
> >> And I received no error message so it's a valid Ant XML.
> >>
> >> Anybody understand why the second version doesn't work?
> >> What's the logic of the test?
> >>
> >> I'm using ANT 1.6.5 which is the latest official release.
Because of the code below in DirectoryScanner:
protected boolean isSelected(String name, File file) {
if (selectors != null) {
for (int i = 0; i < selectors.length; i++) {
if (!selectors[i].isSelected(basedir, name, file)) {
return false;
}
}
}
return true;
}
For a file to be selected, all top-level selectors must be true, and thus
this behaves as an implicit <and>. Your file can't have 3 different names,
can it!?
That's why you need to wrap them into an <or> to get the equivalent of an
sequence of <include> (you don't need to further wrap the <or> into a
<selector>).
Why use <filename> instead of <include>? Because a set of or'd <filename>
can be inverted with a <not> for example, which you can't do with a
patternset, and also because combined with other selectors you can do
selections which you can't do with <patternset>+selectors. --DD
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]