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


Reply via email to