Minimum Supported Gradle Version
You can open this sample inside an IDE using the IntelliJ native importer, Eclipse Buildship. |
This sample shows how the minimum Gradle version modelling offered by dev.gradleplugins.java-gradle-plugin
(and dev.gradleplugins.groovy-gradle-plugin
) can improve your Gradle plugin development.
The plugin only has dependencies on the redistributed Gradle API, see this chapter for more information.
The build also has a minimal configuration with a vanilla TestKit test.
plugins {
id 'dev.gradleplugins.java-gradle-plugin' version '1.2'
id 'groovy-base' // for Spock testing
}
gradlePlugin {
compatibility {
minimumGradleVersion = '4.9'
}
testSourceSets sourceSets.test
plugins {
helloWorld {
id = 'com.example.hello'
implementationClass = 'com.example.BasicPlugin'
}
}
}
repositories {
mavenCentral()
}
dependencies { (1)
testImplementation platform('org.spockframework:spock-bom:1.2-groovy-2.5')
testImplementation 'org.spockframework:spock-core'
testImplementation gradleTestKit()
}
plugins {
id("dev.gradleplugins.java-gradle-plugin") version("1.2")
id("groovy-base") // for Spock testing
}
gradlePlugin {
compatibility {
minimumGradleVersion.set("4.9")
}
testSourceSets(sourceSets.test.get())
plugins {
create("helloWorld") {
id = "com.example.hello"
implementationClass = "com.example.BasicPlugin"
}
}
}
repositories {
mavenCentral()
}
dependencies { (1)
testImplementation(platform("org.spockframework:spock-bom:1.2-groovy-2.5"))
testImplementation("org.spockframework:spock-core")
testImplementation(gradleTestKit())
}
1 | See the Gradle plugin development section on test suites in the user manual, and the test suites sample. |
To build and test the plugin:
$ ./gradlew test BUILD SUCCESSFUL 6 actionable tasks: 6 executed
The plugin builds and executes the test as expected. The important point here is the implicit dependencies:
$ ./gradlew dependencies ... compileClasspath - Compile classpath for source set 'main'. \--- dev.gradleplugins:gradle-api:4.9 \--- org.codehaus.groovy:groovy:2.4.12 ... testRuntimeClasspath - Runtime classpath of source set 'test'. +--- org.spockframework:spock-bom:1.2-groovy-2.5 | \--- org.spockframework:spock-core:1.2-groovy-2.5 (c) \--- org.spockframework:spock-core -> 1.2-groovy-2.5 +--- org.codehaus.groovy:groovy:2.5.2 +--- org.codehaus.groovy:groovy-json:2.5.2 | \--- org.codehaus.groovy:groovy:2.5.2 +--- org.codehaus.groovy:groovy-nio:2.5.2 | \--- org.codehaus.groovy:groovy:2.5.2 +--- org.codehaus.groovy:groovy-macro:2.5.2 | \--- org.codehaus.groovy:groovy:2.5.2 +--- org.codehaus.groovy:groovy-templates:2.5.2 | +--- org.codehaus.groovy:groovy:2.5.2 | \--- org.codehaus.groovy:groovy-xml:2.5.2 | \--- org.codehaus.groovy:groovy:2.5.2 +--- org.codehaus.groovy:groovy-test:2.5.2 | +--- org.codehaus.groovy:groovy:2.5.2 | \--- junit:junit:4.12 | \--- org.hamcrest:hamcrest-core:1.3 +--- org.codehaus.groovy:groovy-sql:2.5.2 | \--- org.codehaus.groovy:groovy:2.5.2 +--- org.codehaus.groovy:groovy-xml:2.5.2 (*) \--- junit:junit:4.12 (*) ...
We can see the Gradle 4.9 API dependencies for the compileClasspath
, and the absence of the API dependencies for testRuntimeClasspath
as expected.
For more information, see Gradle Plugin Development reference chapters and user manual chapter.