Dean,

vppjavac (vpp.sourceforge.net, source available) wraps javac too perform
file preprocessing on the source path before invoking javac.  The intent was
that vppjavac be a 'drop-in' replacement for javac.  Originally, I'd hope to
simply extend Javac, however, because of the protected visibility of the src
fileset, I had to additionally create a new instance of Javac and execute it
in vppjavac's execute() method.  So, my solution was to both extend and
create a new instance.  I figure the extension still has value since it
guarantees that vppjavac's public interface is still a superset of javac's.
Here is how I invoke Javac internally, you could probabaly just cut & paste
this and fix the srcdir property how you want:

        // Since the source path can't be reset directly, we have to create
a
        // new Javac...
        Javac javac = new Javac();

        // --> set this how you want <--
        javac.setSrcdir(somePath);

        // ant properties
        javac.setOwningTarget(getOwningTarget());
        javac.setNowarn(javac.getNowarn());
        javac.setFailonerror(getFailonerror());
        javac.setLocation(getLocation());
        javac.setTaskName(getTaskName());

        // javac properties
        javac.setDestdir(getDestdir());
        javac.setEncoding(getEncoding());
        javac.setDebug(getDebug());
        javac.setOptimize(getOptimize());
        javac.setDeprecation(getDeprecation());
        javac.setDepend(getDepend());
        javac.setVerbose(getVerbose());
        javac.setTarget(getTarget());
        javac.setBootclasspath(getBootclasspath());
        javac.setExtdirs(getExtdirs());
        javac.setClasspath(getClasspath());
        javac.setProject(getProject());
        javac.setLocation(getLocation());
        javac.setIncludeantruntime(getIncludeantruntime());
        javac.setIncludejavaruntime(getIncludejavaruntime());
        javac.setMemoryInitialSize(getMemoryInitialSize());
        javac.setMemoryMaximumSize(getMemoryMaximumSize());

        // Compile!!
        javac.execute();

Why should the src fileset be immutable when not much else is, particularly
classpath?  No clue, maybe someone can shed some light on this...

didge

> -----Original Message-----
> From: Dean Hiller [mailto:[EMAIL PROTECTED]
> Sent: Monday, August 25, 2003 6:25 AM
> To: Ant Developers List
> Subject: Re: trying to get access to fileset from new task to javac task
>
>
> I am compiling the same src directory every time, but with different
> patterns.
>
> Javac uses the FileSet in MatchingTask.  I currently have a hack into
> MatchingTask adding
>     public void putNewFileSet(FileSet set) {
>         fileset = set;
>     }
> because I am not sure how to change out the FileSet of patterns.  Above
> works for me, but is there an easier way ***without changing the ant
> base*** to get what I want.
>
> Your last statement is exactly my intention.
> thanks,
> dean
>
>
>
> Stefan Bodewig wrote:
>
> >On Sun, 24 Aug 2003, Dean Hiller <[EMAIL PROTECTED]> wrote:
> >
> >
> >
> >>I am writing a new task that happens to wrap javac and call it a few
> >>times.  Is there any way to clear the FileSet?
> >>
> >>
> >
> >javac doesn't use a FileSet at all, or it uses a fresh FileSet for all
> ><src> and srcdir entries - depends on how you look at it.
> >
> >
> >
> >>Short story is I want to reuse the same javac with all the same
> >>parameters compiling a different fileset each time.
> >>
> >>
> >
> >Compiling a different src directory?
> >
> >
> >
> >>Maybe it would be ok to put a public clearFileSet in
> >>MatchingTask.java???
> >>
> >>
> >
> >That would only affect the include/exclude patterns but nothing else.
> >
> >Stefan
> >
> >---------------------------------------------------------------------
> >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