Programmatic and command-line interface to AspectJ compiler. The compiler is an ICommand obtained by reflection. Not thread-safe. By default, messages are printed as they are emitted; info messages go to the output stream, and warnings and errors go to the error stream.
Clients can handle all messages by registering a holder:
Main main = new Main(); IMessageHolder holder = new MessageHandler(); main.setHolder(holder);
Clients can get control after each command completes by installing a Runnable:
main.setCompletionRunner(new Runnable() {..});