A sample Gradle plugin demonstrating established techniques and practices for plugin development as described in the following guides:
The plugin provides a task for generating a web page that derives information about the project e.g. applied plugins and available tasks. While minimalistic in functionality it serves as a show case for demonstrating best practices for Gradle plugin development. A site generated for this project can be viewed here.
Tip
|
The plugin is available on the Gradle plugin portal for public consumption. |
The plugin can be applied with by identifier gradle.site
. Default values can be configured with the help of the provided extension org.gradle.plugins.site.SitePluginExtension
. To generate the web page run the task named generateSite
e.g. gradle generateSiteHtml
.
Important
|
The plugin requires a Gradle version of 4.0 or higher. All features that are based on Gradle 4.0 are explicitly marked above. All other features will work with earlier versions of Gradle. |
plugins {
id("gradle.site").version("0.6")
}
site {
outputDir.set(file("$rootDir/docs"))
websiteUrl.set("https://mysite.com")
vcsUrl.set("https://github.com/my/repo.git")
}
-
Production and test code written in Kotlin.
-
Reusable logic written as binary plugin.
-
Usage of the Plugin Development plugin to simplify plugin development. [Code | More Details]
-
Implementation of tasks as custom task type. [Code | More Details]
-
Usage of input and output properties to enable incremental tasks. [Code | More Details]
-
Usage of an extension to capture user-configurable values. [Code | More Details]
-
Mapping of extension property values to custom task properties. [Code | More Details]
-
Reacting to plugins instead of applying plugins. [Code | More Details]
-
Declaration of appropriate plugin identifiers. [Code | More Details]
-
Functional testing with TestKit. [Code | More Details]
-
Publication of the plugin artifacts to the Gradle plugin portal [Code | More Details]
-
Continuous Integration of plugin code with Travis CI. [Code | More Details]
-
Automatic generation of build scans when build is executed from CI. [Code | More Details]