Hi Jayson,
IDE support has one of the highest priorities for Gradle. You will
get all the help you need from my side for implementing your plugin.
On May 31, 2008, at 1:45 AM, Jayson Minard wrote:
Hello Hans,
I'm looking at developing or having someone at my company develop
an IntelliJ plugin for Gradle for launching builds as well as
keeping the IntelliJ module library set up to date.
So consider the following set of items we most likely need to
accomplish:
- Instantiate and run Gradle directly and want to have it confer
the configured tasks to us
As Gradle builds the tasks graph before it starts the execution this
is basically easy. If you type gradle -t for a particular project
this graph is for example printed to the console. The only problem is
that it might takes a couple of seconds to generate this graph as the
build script has to be evaluated. A structured view of the gradlefile
in form of its task elements would be very cool. The question is how
to update it. Starting the graph generation for every build script
change might be too expensive.
- be able to launch specific tasks
As soon as we have a task view this is easy.
- finally hear the dependencies that are resolved and where we can
access them
Easy for normal dependencies. The problem are multi-project builds as
you want to have project dependencies between them. Gradle needs to
offer a method where you can ask explicitly for external dependencies
or project dependencies. This won't be too hard to implement but is
not available yet.
- configure where we would want the cache to exist locally in case
the user wants them to be cached within the module tree
Easy,
- possibly silently make the Gradle jar available to the project
for gradlefile development
What I have in mind is a feature where you can specifically define a
classpath for the gradlefile. This classpath would be independent of
the classpath for the module. I don't know how difficult this is to
implement with IntelliJ. I have asked Eugene Vigdorchik, the
JetGroovy lead, about this a month ago. He wanted to think about it.
May be he has some good idea now ;). I'm sure he will give advise to
you for developing such a functionality.
What is easily available vs. hard to get at within Gradle? Any big
barriers in the way?
For 0.2 we want to implement a rich plugin system. One plan is to let
the plugins communicate directly with each other. One use case are
IDE plugins. We think about an Interface IdeAware which is
implemented for example by the Java plugin and the War plugin. The
IntelliJPlugin would be able to send request to all IdeAware plugins
(without knowing them) and those plugins would add information to the
IDE domain objects. With this information the IntelliJ plugin can
then build the IDE files. The development for 0.2 will start next week.
One thing we could start with is a test project with a gradlefile.
usePlugin('java')
dependencies {
// some declarations
}
createTask('intelliJ') {
// the logic for creating the intelliJ project files.
}
If this works we can refactor the intelliJ task into a plugin.
What do you think?
- Hans
Thanks for any kick-start help you can provide.
-- Jayson @ MindHeap
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email
--
Hans Dockter
Gradle Project lead
http://www.gradle.org
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email