ant-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Peter Donald <>
Subject Re: invocation api
Date Fri, 14 Dec 2001 22:02:59 GMT
On Fri, 14 Dec 2001 10:50, Adam Murdoch wrote:
> I'd like to suggest another item for the Ant1.9 action list:  An invocation
> API which would allow Ant to be embedded inside other apps (such as GUIs,
> IDEs, build schedulers, build servlets, etc).

excellent idea !

> Right now, invoking Ant is not as clean as it could be - for example, you
> can use Main.start() and give up control over a bunch of things, or you can
> copy and hack Main.  The goal of this task is to come up with a cleaner and
> more flexible way of doing this, by pushing the container related code from
> Main and Project behind an API.


> This task would involve putting together an API which would allow an app
> to:
> - Create a project from a bunch of sources - file, InputStream, URL, SAX
> events, etc.
> - Configure a project:
>    - set classloader.
>    - set user properties.
>    - add task and datatype definitions.
>    - add/remove listeners
>    - add/remove loggers.
> - Get meta-info about the targets in the project (just a tiny subset for
> now):
>    - name
>    - description
> - Execute a task, or a set of tasks.
> There's a bunch of extra stuff an invocation API *could* do - I wanted to
> keep the initial list short and reasonably well-defined.  Some things that
> might be good to add later:
> - A similar API that a task can use to invoke a target in either the same
> project or another project.
> - Adding tasklibs, vfs mount points, etc.
> - Managing the project definition: things like adding and removing targets
> and tasks, setting task attributes, etc.
> - Expose a more general task engine API.
> Any interest in something like this?  I'd be happy to do the work.

Plenty of interest. The way that I originally envisaged it was separating it 
into essentially two components. One was the "task engine" which allowed you 
to embed execution of all the tasks and so forth outside the context of an 
ant build file. You would need to manually set up all of the tasklibs and so 
forth but it allows you maximum flexability.

Then there would be the other component that would basically allow you to 
execute build files from withing another application. These would basically 
be a simplified way to interact with ant.

This is definetly a good idea!



The difference between genius, and stupidity? Genius has limits

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

View raw message