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

Reply via email to