I know of no direct way to do it, so how best to complete it depends on the 
scope.  If you have many such optional directories, I can come up with a couple 
ugly things to try.  

1) Conditionally define properties that point to the real location, or a dummy 
location, depending on the existence of the real location.  Then use this 
property in your fileset.
      <condition property="lib_dir" value="lib">
         <available file="lib" type="dir"/>
      </condition>
        <property name="lib_dir"        value="empty_dummy_dir"/>

2) Define each fileset in its own target, and then combine all 10 together in a 
separate definition.  (Not sure if this would work.)

These are two ideas that immediately come to mind.  Maybe there is something 
more clever that would be better.

-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED]
Sent: Monday, December 06, 2004 2:19 PM
To: Ant Users List
Subject: RE: fileset fails when base dir is missing

I thought of this, actually.  But what puzzles me is how to leverage the 
value of "mod_classdir.check", once it has been set (or not set), inside 
my path defnition.  I could, conceivably, have two path definitions, one 
which includes the offendiring fileset, and another which does not,, and 
then I could select the appropriate path based on the the value of 
mod_classdir.check.  However, this approach certainly is not scalable, 
since if I had 10 filesets involved, then I would need 1024 different path 
specifications.

How would you get to a conditionally included fileset from a conditionally 
set property?  Does <fileset> have an "if" or "unless" attribute like the 
"target" tag does?

"Murray, Mike" <[EMAIL PROTECTED]> wrote on 12/06/2004 01:09:36 PM:

> It sure would be nice, but since it isn't you're left doing it the 
> long, and complicated, way.  That is, creating additional targets 
> with dependencies and conditions to get the desired conditional 
> behavior. The property can be set as follows.
> 
>    <target name="mod_classdir.check">
>       <condition property="mod_classdir.exists">
>          <available file="${mod_classdir}" type="dir"/>
>       </condition>
>    </target>
> 
> -----Original Message-----
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED]
> Sent: Monday, December 06, 2004 1:58 PM
> To: Ant Users List
> Subject: Re: fileset fails when base dir is missing
> 
> That's a clever hack, but it won't work well in my situation, since some 

> of the filesets may be rooted in directories that cannot be created. 
> Wouldn't it be nice if the <fileset> tag had an attribute that allowed 
you 
> do say, "It's OK if it doesn't exist"?  Something like this:
> 
> <fileset dir="somedir" if-base-dir-is-missing="ignore">...</fileset>
> 
> Anyone else have a good idea?
> 
> "Alexey N. Solofnenko" <[EMAIL PROTECTED]> wrote on 12/06/2004 
12:44:29 
> PM:
> 
> > I usually execute <mkdir> in this situation - an empty directory does 
> > not affect anything else and makes some commands happy.
> > 
> > - Alexey.
> > 
> > [EMAIL PROTECTED] wrote:
> > 
> > >I am constructing a classpath that includes a fileset.  Sometimes, 
the 
> > >base directory for that fileset does not exist.  I would like Ant to 
> > >simply accept this as an empty fileset and move on.  Instead, Ant 
quits 
> 
> > >with an error, complaining that the directory is not found.  How 
should
> > >I 
> > >resolve this problem?
> > >
> > >In other words...
> > >
> > ><path id="cp">
> > >        <fileset dir="lib" includes="**/*.jar"/>
> > >        <pathelement location="a.jar"/>
> > >        <pathelement location="b.jar"/>
> > >        <pathelement location="c.jar"/>
> > ></path>
> > ><javac
> > >        destdir="${classes}"
> > > 
> > >
> > >        <src path="${src}"/>
> > >        <classpath>
> > >                <path refid="cp"/>
> > >        </classpath>
> > ></javac>
> > >
> > >...fails if the "lib" folder does not exist.  I would rather have Ant
> > >just 
> > >keep on going.  Any ideas?
> > > 
> > >
> > 
> > 
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> > 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to