Skip to end of metadata
Go to start of metadata

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
  • None