I wanted to float this out there just so others could comment on it.
We've been working on a UI for gradle as well as an Idea plugin that not only
contains the UI, but also some support for debugging gradle within an IDE. Two
of the goals here were:
- Don't tie an IDE plugin to a specific version of gradle. This means the
standalone gradle UI is the same one used by an IDE. This allows you to get the
latest features of gradle without waiting for an updated plugin.
- Allow others to easily write plugins for other IDEs. You should mostly need
to write the IDE-specific code. The gradle-specific code is minimized,
especially if you just want to get the UI into the IDE.
To accommodate these, we have locally created an 'open API' subproject. This
provides a simple versioned way to interact with gradle. The open API jar is
all that is needed to develop/distribute a plugin. It provides some static
functions that dynamically load gradle from a directory you specify to do
things like create the UI or execute gradle commands directly (and I think some
gradle debugger information may soon be accessible there). All you need is the
gradle home directory and the open API jar.
As per the first goal, we want this to be forward compatible. The issue
arises that things like the UI require a certain level of IDE integration. Its
not just a swing component, but you can right click a project and select 'Edit
File' to open it in your IDE. It also stores the current settings with the
IDE's project file (which is very IDE-specific). So the open API is mostly made
of versioned interfaces. Once a certain milestone is hit, all interfaces will
be frozen. New functionality can still be added as we internally use
wrapper/proxy classes to abstract these interfaces. These wrappers define the
default behavior of new features when called by an older open API.
This also means that one IDE plugin is inherently compatible with multiple
versions of gradle simultaneously. This is useful if you're working with
several versions of a product (we're still doing service packs for a version of
our product that was released over 3 years ago).
Comments?
Mike
Automated Logic Research Team
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email