ant-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jeffrey E Care <>
Subject Re: per-task diagnostics
Date Tue, 20 Feb 2007 15:22:59 GMT
I know I'm a little late to this party - I've been tied up in my new 
assignment. Anyway, FWIW here's my opinion:

> I've been thinking about how we could improve our diagnostics, by moving 

> more of the diags into tasks themselves. Every task could have a 
> diagnostics(PrintStream) method that would be called to do the diags.

Sounds like a good idea to me; might I suggest that we add a similar 
capability for an entire antlib (more on this below)?
> 1. we could introspect for a public static void diagnostics(PrintStream) 

> throws BuildException method. This would let us diagnose even if you 
> cannot instantiate the task enough for new() to work.

I'm a little rusty on static method overrides...if A extends B, can both A 
and B have a static method with identical signatures? This should be easy 
to test, but I'm feeling lazy at the moment :)

> 2. or we'd use an interface Diagnostics that things could implement

Intuitively this feels like a cleaner approach to me. Admittedly you need 
an instance to work with, but we'd just need to document the fact that if 
the constructor fails you can't get any diags; it shouldn't be too hard 
for tasks implementing this interface to put volatile init code somewhere 
other than the constructor.

> 3. the -diagnostics command and <diagnostics> tasks could be made to 
> diagnose a single task
>   ant -diagnostics -task junit
> and maybe even a single antlib namespace
>   ant -diagnostics -xmlns antlib:org.example.something

Okay, so I see that you've considered the antlib case to a certain extent. 
This has me thinking about antlib auto-discovery again. Instead of 
requiring users to specify the task or antlib they want diags on, I think 
it would be easier for users to add a "-fullDiagnostics" option that would 
dump the normal "-diagnostics" info _plus_ whatever task/antlib diags it 
could find. For that to work we would need some sort of auto-discovery 
mechanism (which has been discussed before).

I also think we could add something similar for version information; a 
"-fullVersion" flag could dump the normal "-version" info _plus_ version 
info about discovered antlibs.

Jeffrey E. (Jeff) Care 
IBM WebSphere Application Server 
Systems Management Development 

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message