Hans Dockter wrote:

On Dec 27, 2008, at 12:32 AM, Tom Eyckmans wrote:

I like the idea of an ide plugin very much. We could do something similar with ide as with testframeworks ( renamed from testconvention to testframework to prevent confusion ):

like in test:

test {
   useJunit() / useTestNG() / ...
}

ide {
   useIntelliJ() / useEclipse() / ...
retrieveSources ( default for all dependency configurations ? transitive yes/no? )
}

just a thougth

I think it makes a lot of sense to have an common abstraction on top of IntelliJ/Eclipse/NetBeans for IDE stuff. Steven Devijver had another idea on top of this which I really like. Plugins should be able to communicate which each other. In the case of our future IDE plugin this means. A plugin which is not written by us marks itself as IDEAware. In this case, the IDE plugin passes an IDEConf object to this external plugin and the external plugin can read/modify the IDEConf.


I like this idea, though I would tweak it to look like this:

- A plugin can provide the APIs for an abstraction, such as test framework, IDE, application server, VCS, along with the configuration for the abstraction. - Another plugin can declare that it requires a certain abstraction, and Gradle (rather than the provider plugin) takes care of injecting an implementation into the client plugin. - The provider plugin may optionally provide extension points, and a plugin can declare that it provides an extension to an abstraction (eg integration with git, say), and Gradle takes care of registering it with the provider plugin. - Some abstractions will be provided by Gradle core (eg dependency management), but otherwise used and extended in the same way as if they were provided by a plugin (which they might end up doing if we were to later bust up the core into plugins).

Something like this would map to the osgi model pretty naturally, I think.


Adam

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

   http://xircles.codehaus.org/manage_email


Reply via email to