Hi! Geertjan asked me if I could move my Gradle plugin to be part of NetBeans. I would gladly do that but there are some problems to overcome as I don't know the Ant build of NB at all. Currently the Gradle plugin is built with Gradle (suprise, surprise) and does the following non-trivial things:
- There two subprojects: "netbeans-gradle-default-models" and "netbeans-gradle-plugin". The latter is relatively trivial and depends on "netbeans-gradle-default-models" - "netbeans-gradle-default-models" is trickier however: It is separated from the core subproject because it is built with a different version of Java (Java 6 currently). The reason for using a different version of Java is because this jar will later be loaded by Gradle and thus will force Gradle to be started with a version of Java able to load "netbeans-gradle-default-models". The version of Java used to start Gradle is - most commonly - the version of Java used to build the user's project. - "netbeans-gradle-default-models" is again split into two source sets (not counting the tests): One is built using Groovy and the other is Java only. The Groovy code is never accessed directly by the plugin, only from within the Gradle process (it needs Groovy because it would be *very* inconvenient to use pure Java code to read from the Gradle process). Therefore the Java sourceset is not permitted to access the Groovy classes (it would cause a compile time failure). - "netbeans-gradle-default-models" depends on Gradle 1.8 API. Since the API is not (fully) uploaded to any Maven repository I know of, I download the Gradle distribution (1.8), unzip it and use its libs as dependencies (the build code does this automatically without any manual process). Note that only the Groovy sources are allowed to access the Gradle API as I'm not bundling the whole Gradle distribution with the plugin. - I run the tests against multiple Gradle versions and I do that by running the tests multiple times with the "TESTED_GRADLE_DAEMON_VERSION" system property set appropriately. Is there anyone who knows how this code could be integrated into the NB code base? Also, it would be nice to integrate the plugin in a way to be able to release a new version of the plugin (should a change in Gradle require us to do so) out of sync with NB updates. If implementing all these requirements in the Ant build are not feasible, would it be ok if the NB build would download the NBM of this plugin from JCenter and bundle it that way? Thanks, Attila Kelemen
