Faster incremental weaving

View: New views
2 Messages — Rating Filter:   Alert me  

Faster incremental weaving

by Tahir Akhtar :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi,
I am evaluating the use of AspectJ in project that contains more than
2500 java source files.
The project uses a complex ant build file that does a lot of different
stuff (like creating and signing applet jars, pre-compiling jsps, jarjar
some external libs etc).
The same build process is used by around 20 developers, QA and release
staff.  
As a lot of people run the build process several times a day, any change
in build process that introduces large delays will not be acceptable.

I have tried iajc ant task with "incremental" option. But the
interactive nature of this process doesn't appear to be what I need. For
example, when QA person receives a couple of java source files and a
jsp, s/he needs to run the complete build process so classes are
compiled and jsp gets copied to correct location. So waiting with an
interactive prompt for incremental compilation won't work unless we run
build process from two console windows simultaneously.

Our current intended use of AspectJ is simple. Something along the line
of advising methods marked with a custom annotation.
I was wondering whether it makes sense to write a custom APT processor
to weave only the classes that get recompiled by javac ant task?
I understand that this setup will work correctly in very limited
scenarios but still would like to explore this option.

Any suggestions?

Regards
Tahir Akhtar


_______________________________________________
aspectj-users mailing list
aspectj-users@...
https://dev.eclipse.org/mailman/listinfo/aspectj-users

Re: Faster incremental weaving

by Andy Clement :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi Tahir,

I don't particularly like the incremental ajc task and, yes, it works
by behaving as a long running process.  The incremental state needs to
be held in memory between compiles.  This could be held on disk and
the task not require a long running process but I don't think we'll be
tackling that in the 1.6.X timeframe.

> Our current intended use of AspectJ is simple. Something along the line of
> advising methods marked with a custom annotation.
> I was wondering whether it makes sense to write a custom APT processor to
> weave only the classes that get recompiled by javac ant task?
> I understand that this setup will work correctly in very limited scenarios
> but still would like to explore this option.

I've not done that myself but it sounds like it would work.  If the
aspects change you'll of course need a bigger build, but if just a few
simple files change that are affected purely by advice, I don't see
why they cannot be woven 'standalone'.  The act of advising a type
should not cause its public interface to change (new/changed/removed
methods/fields) and so it shouldn't cause you to need to recompile
other types based on the weaving.

Andy

2009/6/15 Tahir Akhtar <tahir@...>:

> Hi,
> I am evaluating the use of AspectJ in project that contains more than 2500
> java source files.
> The project uses a complex ant build file that does a lot of different stuff
> (like creating and signing applet jars, pre-compiling jsps, jarjar some
> external libs etc).
> The same build process is used by around 20 developers, QA and release
> staff.  As a lot of people run the build process several times a day, any
> change in build process that introduces large delays will not be acceptable.
>
> I have tried iajc ant task with "incremental" option. But the interactive
> nature of this process doesn't appear to be what I need. For example, when
> QA person receives a couple of java source files and a jsp, s/he needs to
> run the complete build process so classes are compiled and jsp gets copied
> to correct location. So waiting with an interactive prompt for incremental
> compilation won't work unless we run build process from two console windows
> simultaneously.
>
> Our current intended use of AspectJ is simple. Something along the line of
> advising methods marked with a custom annotation.
> I was wondering whether it makes sense to write a custom APT processor to
> weave only the classes that get recompiled by javac ant task?
> I understand that this setup will work correctly in very limited scenarios
> but still would like to explore this option.
>
> Any suggestions?
>
> Regards
> Tahir Akhtar
>
>
> _______________________________________________
> aspectj-users mailing list
> aspectj-users@...
> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>
_______________________________________________
aspectj-users mailing list
aspectj-users@...
https://dev.eclipse.org/mailman/listinfo/aspectj-users