Extending Gradle: Difference between revisions
Line 10: | Line 10: | ||
==In-line in build.gradle== | ==In-line in build.gradle== | ||
Both custom tasks and binary plugins can be fully declared in-line in [[build.gradle]]. While declaring simple custom tasks in-line is acceptable, provided that the tasks are not intended for reuse and sharing among other projects, declaring a full binary plugin in-line is, albeit possible, not recommended. | Both custom tasks and binary plugins can be fully declared in-line in [[build.gradle]]. While declaring simple custom tasks in-line is acceptable, provided that the tasks are not intended for reuse and sharing among other projects, declaring a full binary plugin in-line is, albeit possible, not recommended. | ||
Example of a [https://github.com/ovidiuf/playground/tree/master/gradle/extending-gradle/01-in-line-build-gradle-simple-task simple custom task declared in-line in build.gradle]. | |||
==In-line in a script plugin== | ==In-line in a script plugin== |
Revision as of 06:49, 24 September 2020
Internal
Overview
The simplest way to extend Gradle is to write a custom task, which can be declared in-line in the project's build.gradle or in a script plugin, in the projects's buildSrc directory or in can be external to project and provided back to the Gradle runtime as a JAR. More complex behavior that goes beyond the capabilities of a custom task can be implemented as a custom object plugin, which has the same choice in terms of where the code lives.
Extensions Code Location
In-line in build.gradle
Both custom tasks and binary plugins can be fully declared in-line in build.gradle. While declaring simple custom tasks in-line is acceptable, provided that the tasks are not intended for reuse and sharing among other projects, declaring a full binary plugin in-line is, albeit possible, not recommended.
Example of a simple custom task declared in-line in build.gradle.
In-line in a script plugin
A script plugin is a regular Gradle build script that can be imported into another build script. Both custom tasks and "binary" plugin code can be declared in-line in a script plugin.
In the Project's buildSrc Directory
This is a good choice while developing the custom task or plugin, because it gives a quick feedback loop and allows for in-line debugging.
External to Project
Extension code can live in separate standalone projects that publish JARs. Those JARs can be declared as dependencies by a Gradle project that can then use the custom task or the binary plugin externally developed.