Gradle 2.12 will automatically create a compileOnly configuration for each added SourceSet in a Java project (this is in the JavaBasePlugin, see here), and configure the source set's compilationClasspath to use it (as it extends the compile configuration).
The gradle-appengine-plugin currently:
creates the functionalTestCompile and functionalTestRuntime configurations, which can actually be created on-the-fly by the JavaBasePlugin when creating the functionalTest source set (see here)
configures the functionalTest source set's compilationClasspath (and runtimeClasspath) to “add” the main source set's output; but does it using the functionalTestCompile configuration, not the defaultcompilationClasspath (and runtimeClasspath) as already populated by Gradle. When used with the upcoming Gradle 2.12, this means the functionalTestCompileOnly configuration created by Gradle will be ignored (but will still exist).
Now, maybe the default configuration I hint above wasn't done that way (or at all) in previous versions of Gradle, which explains why you create everything by hand here. I however thing it should be possible to somehow code defensively in preparation for Gradle 2.12 (either using the default value of compilationClasspath as configured by Gradle, or if it didn't always configure it automatically then looking for a functionalTestCompileOnly configuration and use it for the compilationClasspath in place of –or in addition to– the functionalTestCompile one that you create).
Disclaimer: I don't use AppEngine, I don't use this plugin; but I was asked to support functionalTest in my net.ltgt.apt plugin for Gradle (see https://github.com/tbroyer/gradle-apt-plugin/issues/18), and I also try to get its features integrated within Gradle proper, so I looked at the gradle-appengine-plugin source code and saw the above.
Note that supporting Gradle 2.12's compileOnly configurations using "feature detection" (rather than version comparision) would also mean that the gradle-appengine-plugin would automatically be compatible with the net.ltgt.apt plugin ;-)
Gradle 2.12 will automatically create a
compileOnly
configuration for each addedSourceSet
in a Java project (this is in theJavaBasePlugin
, see here), and configure the source set'scompilationClasspath
to use it (as it extends thecompile
configuration).The gradle-appengine-plugin currently:
functionalTestCompile
andfunctionalTestRuntime
configurations, which can actually be created on-the-fly by theJavaBasePlugin
when creating thefunctionalTest
source set (see here)functionalTest
source set'scompilationClasspath
(andruntimeClasspath
) to “add” themain
source set'soutput
; but does it using thefunctionalTestCompile
configuration, not the defaultcompilationClasspath
(andruntimeClasspath
) as already populated by Gradle. When used with the upcoming Gradle 2.12, this means thefunctionalTestCompileOnly
configuration created by Gradle will be ignored (but will still exist).Now, maybe the default configuration I hint above wasn't done that way (or at all) in previous versions of Gradle, which explains why you create everything by hand here. I however thing it should be possible to somehow code defensively in preparation for Gradle 2.12 (either using the default value of
compilationClasspath
as configured by Gradle, or if it didn't always configure it automatically then looking for afunctionalTestCompileOnly
configuration and use it for thecompilationClasspath
in place of –or in addition to– thefunctionalTestCompile
one that you create).Disclaimer: I don't use AppEngine, I don't use this plugin; but I was asked to support
functionalTest
in mynet.ltgt.apt
plugin for Gradle (see https://github.com/tbroyer/gradle-apt-plugin/issues/18), and I also try to get its features integrated within Gradle proper, so I looked at the gradle-appengine-plugin source code and saw the above.Note that supporting Gradle 2.12's
compileOnly
configurations using "feature detection" (rather than version comparision) would also mean that the gradle-appengine-plugin would automatically be compatible with thenet.ltgt.apt
plugin ;-)