Gradle Plugin Concepts: Difference between revisions
Line 47: | Line 47: | ||
=Standard Plugins= | =Standard Plugins= | ||
A standard plugin ships with the Gradle runtime. | A standard plugin ships with the Gradle runtime. It is also referred to as a "core" plugin, and it uses the org.gradle namespace. | ||
* [[Gradle Java Plugin]] | * [[Gradle Java Plugin]] | ||
==Plugin Libraries== | ==Plugin Libraries== |
Revision as of 22:45, 29 September 2020
External
- https://docs.gradle.org/current/userguide/plugins.html
- Gradle Plugin Portal https://plugins.gradle.org/
Internal
TODO
Overview
A Gradle plugin is packaged code that uses the Gradle API to provide additional functionality and extend Gradle core. A Gradle plugin applies some configuration to a target object, usually a Project. The plugin may introduce new tasks, new domain objects, conventions, project layouts and patterns for a specific problem domain. Plugins may even extend the core objects. Introducing their own conventions, plugins are "opinionated", in that they encourage the user to do things in a certain way. However, well written plugins must provide means to change the default conventions and make it work for non-standard projects.
Plugin API
Script Plugin
A script plugin is simply a file containing Gradle DSL code and possibly in-line Java and Groovy code. It can be thought as just another modular build script to be imported into a build script.
apply from: 'example.gradle'
Conventionally, the file has the ".gradle" extension, but this is not mandatory. The file can be loaded from the local filesystem, or from a remote location. Filesystem location is relative to the project directory. Remote locations are specified with HTTP URLs.
Binary Plugin
A binary plugin is a class implementing org.gradle.api.Plugin and ancillary classes.
Using a Plugin
Plugins can be applied in two ways, via the apply method or via the plugins script block.
apply() Method
apply() is a method of the PluginAware interface that is inherited by Project, Settings and Gradle.
apply plugin: 'java'
plugins Script Block
The 'plugins' script block is exposed by org.gradle.plugin.use.PluginDependenciesSpec, which is the specialized DSL to declare plugins to use in a script.
plugins {
id 'java'
}
Core Gradle plugin can be declared using their ID.
Plugin Extension
A plugin is a typical use case for an extension.
Standard Plugins
A standard plugin ships with the Gradle runtime. It is also referred to as a "core" plugin, and it uses the org.gradle namespace.