This proposal is a work in progress |
What?
The plugin system refers to how you discover, use, author and share Gradle plugins.
Why?
There are a number of problems with the current plugin system:
- There is no consistent way to discover existing plugins.
- Plugin authoring is not well documented and more complex that it needs to be.
- Plugins are not isolated from each other, so that their dependencies can collide.
- There are many differences between using a built-in and an external plugin.
- We cannot release a subset of Gradle.
- more to come
Use cases
Some use cases we want to solve or make easier to implement:
- Build author discovers whether a plugin exists that solves a particular problem they have.
- Build author uses a plugin which is not part of the Gradle distribution
- Plugin author maintains a plugin to be shared by multiple builds in an organisation
- Plugin author collaborates on an open source plugin with others
- Build user installs and uses Gradle without downloading stuff that they do not need.
- Gradle developer releases a new version of Gradle without also releasing new versions of all standard plugins.
- Gradle developer releases a new version of a standard plugin without also releasing a new version of Gradle.
- Gradle developer can provide different degrees of backwards-compatibility to different standard plugins. For example, for a Gradle 1.0 release we might want to provide backwards compatibility for the java, groovy, scala and war plugins, but not the announce and code-quality plugins.
- more to come
Implementation
Labels
