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]