## Language plugins
gradle.documentation.org.gradle.api.Project.apply.plugin.java.non-html=\
  Adds Java compilation, testing and bundling capabilities to a project.\
   It serves as the basis for many of the other Gradle plugins.
gradle.documentation.org.gradle.api.Project.apply.plugin.java=\
  <p>Adds Java compilation, testing and bundling capabilities to a project.\
   It serves as the basis for many of the other Gradle plugins. \
  See also <a class="xref" href="http://www.gradle.org/docs/current/userguide/tutorial_java_projects.html">Chapter 7, <i>Java Quickstart</i></a>.\
  </p>\
  <p>Automatically applies: java-base</p>
gradle.documentation.org.gradle.api.Project.apply.plugin.groovy.non-html=\
  Adds support for building Groovy projects.
gradle.documentation.org.gradle.api.Project.apply.plugin.groovy=\
  <p>Adds support for building Groovy projects. \
  See also <a class="xref" href="http://www.gradle.org/docs/current/userguide/tutorial_groovy_projects.html">Chapter 9, <i>Groovy Quickstart</i></a>.</p>\
  <p>Automatically applies: java, groovy-base</p>
gradle.documentation.org.gradle.api.Project.apply.plugin.scala.non-html=\
  Adds support for building Scala projects.
gradle.documentation.org.gradle.api.Project.apply.plugin.scala=\
  <p>Adds support for building Scala projects.</p>\
  <p>Automatically applies: java, scala-base</p>
gradle.documentation.org.gradle.api.Project.apply.plugin.antlr.non-html=\
  Adds support for generating parsers using Antlr
gradle.documentation.org.gradle.api.Project.apply.plugin.antlr=\
  <p>Adds support for generating parsers using <a class="ulink" href="http://www.antlr.org/" target="_top">Antlr</a>.</p>\
  <p>Automatically applies: java</p>

## Integration plugins
gradle.documentation.org.gradle.api.Project.apply.plugin.application.non-html=\
  Adds tasks for running and bundling a Java project as a command-line application.
gradle.documentation.org.gradle.api.Project.apply.plugin.application=\
  <p>Adds tasks for running and bundling a Java project as a command-line application.</p>\
  <p>Automatically applies: java</p>
gradle.documentation.org.gradle.api.Project.apply.plugin.ear.non-html=\
  Adds support for building J2EE applications.
gradle.documentation.org.gradle.api.Project.apply.plugin.ear=\
  <p>Adds support for building J2EE applications.</p>
gradle.documentation.org.gradle.api.Project.apply.plugin.jetty.non-html=\
  Deploys your web application to a Jetty web container embedded in the build.
gradle.documentation.org.gradle.api.Project.apply.plugin.jetty=\
  <p>Deploys your web application to a Jetty web container embedded in the build. \
  See also <a class="xref" href="http://www.gradle.org/docs/current/userguide/web_project_tutorial.html">Chapter 10, <i>Web Application Quickstart</i></a>.</p>\
  <p>Automatically applies: war</p>
gradle.documentation.org.gradle.api.Project.apply.plugin.maven.non-html=\
  Adds support for publishing artifacts to Maven repositories.
gradle.documentation.org.gradle.api.Project.apply.plugin.maven=\
  <p>Adds support for publishing artifacts to Maven repositories.</p>
gradle.documentation.org.gradle.api.Project.apply.plugin.osgi.non-html=\
  Adds support for building OSGi bundles.
gradle.documentation.org.gradle.api.Project.apply.plugin.osgi=\
  <p>Adds support for building OSGi bundles.</p>\
  <p>Automatically applies: java-base</p>
gradle.documentation.org.gradle.api.Project.apply.plugin.war.non-html=\
  Adds support for assembling web application WAR files.
gradle.documentation.org.gradle.api.Project.apply.plugin.war=\
  <p>Adds support for assembling web application WAR files. \
  See also <a class="xref" href="http://www.gradle.org/docs/current/userguide/web_project_tutorial.html">Chapter 10, <i>Web Application Quickstart</i></a>.</p>\
  <p>Automatically applies: java</p>

## Software development plugins
gradle.documentation.org.gradle.api.Project.apply.plugin.announce.non-html=\
  Publish messages to your favourite platforms, such as Twitter or Growl.
gradle.documentation.org.gradle.api.Project.apply.plugin.announce=\
  <p>Publish messages to your favourite platforms, such as Twitter or Growl.</p>
gradle.documentation.org.gradle.api.Project.apply.plugin.build-announcements.non-html=\
  Sends local announcements to your desktop about interesting events in the build lifecycle.
gradle.documentation.org.gradle.api.Project.apply.plugin.build-announcements=\
  <p>Sends local announcements to your desktop about interesting events in the build lifecycle.</p>
gradle.documentation.org.gradle.api.Project.apply.plugin.checkstyle.non-html=\
  Performs quality checks on your project's Java source files using Checkstyle and generates reports from these checks.
gradle.documentation.org.gradle.api.Project.apply.plugin.checkstyle=\
  <p>Performs quality checks on your project's Java source files using \
      <a class="ulink" href="http://checkstyle.sourceforge.net/index.html" target="_top">Checkstyle</a> \
      and generates reports from these checks.\
  </p>
gradle.documentation.org.gradle.api.Project.apply.plugin.codenarc.non-html=\
  Performs quality checks on your project's Groovy source files using CodeNarc and generates reports from these checks.
gradle.documentation.org.gradle.api.Project.apply.plugin.codenarc=\
  <p>Performs quality checks on your project's Groovy source files using \
      <a class="ulink" href="http://codenarc.sourceforge.net/index.html" target="_top">CodeNarc</a> \
      and generates reports from these checks.\
  </p>
gradle.documentation.org.gradle.api.Project.apply.plugin.eclipse.non-html=\
  Generates files that are used by Eclipse IDE, thus making \
      it possible to import the project into Eclipse.
gradle.documentation.org.gradle.api.Project.apply.plugin.eclipse=\
  <p>Generates files that are used by <a class="ulink" href="http://eclipse.org" target="_top">Eclipse IDE</a>, thus making \
      it possible to import the project into Eclipse. \
  See also <a class="xref" href="http://www.gradle.org/docs/current/userguide/tutorial_java_projects.html">Chapter 7, <i>Java Quickstart</i></a>.</p>
gradle.documentation.org.gradle.api.Project.apply.plugin.eclipse-wtp.non-html=\
  Does the same as the eclipse plugin plus generates eclipse WTP (Web Tools Platform) configuration files. \
  After importing to eclipse your war/ear projects should be configured to work with WTP.
gradle.documentation.org.gradle.api.Project.apply.plugin.eclipse-wtp=\
  <p>Does the same as the eclipse plugin plus generates eclipse WTP (Web Tools Platform) configuration files. \
      After importing to eclipse your war/ear projects should be configured to work with WTP.\
      See also <a class="xref" href="http://www.gradle.org/docs/current/userguide/tutorial_java_projects.html">Chapter 7, <i>Java Quickstart</i></a>. \
  </p>
gradle.documentation.org.gradle.api.Project.apply.plugin.findbugs.non-html=\
  Performs quality checks on your project's Java source files using FindBugs and generates reports from these checks.
gradle.documentation.org.gradle.api.Project.apply.plugin.findbugs=\
  <p>Performs quality checks on your project's Java source files using \
      <a class="ulink" href="http://findbugs.sourceforge.net" target="_top">FindBugs</a> \
      and generates reports from these checks.\
  </p>
gradle.documentation.org.gradle.api.Project.apply.plugin.idea.non-html=\
  Generates files and applies IDEA specific customizations that are used by Intellij IDEA IDE thus making it possible to import the project into IDEA.
gradle.documentation.org.gradle.api.Project.apply.plugin.idea=\
  <p>Generates files and applies IDEA specific customizations that are used by <a class="ulink" href="http://www.jetbrains.com/idea/index.html" target="_top">Intellij IDEA IDE</a>, \
      thus making it possible to import the project into IDEA.\
  </p>
gradle.documentation.org.gradle.api.Project.apply.plugin.jdepend.non-html=\
  Performs quality checks on your project's source files using JDepend and generates reports from these checks.
gradle.documentation.org.gradle.api.Project.apply.plugin.jdepend=\
  <p>Performs quality checks on your project's source files using \
      <a class="ulink" href="http://clarkware.com/software/JDepend.html" target="_top">JDepend</a> \
      and generates reports from these checks.\
  </p>
gradle.documentation.org.gradle.api.Project.apply.plugin.pmd.non-html=\
  Performs quality checks on your project's Java source files using PMD and generates reports from these checks.
gradle.documentation.org.gradle.api.Project.apply.plugin.pmd=\
  <p>Performs quality checks on your project's Java source files using \
      <a class="ulink" href="http://pmd.sourceforge.net" target="_top">PMD</a> \
      and generates reports from these checks.\
  </p>
gradle.documentation.org.gradle.api.Project.apply.plugin.project-report.non-html=\
  Generates reports containing useful information about your Gradle build.
gradle.documentation.org.gradle.api.Project.apply.plugin.project-report=\
  <p>Generates reports containing useful information about your Gradle build.</p>
gradle.documentation.org.gradle.api.Project.apply.plugin.signing.non-html=\
  Adds the ability to digitally sign built files and artifacts.
gradle.documentation.org.gradle.api.Project.apply.plugin.signing=\
  <p>Adds the ability to digitally sign built files and artifacts.</p>
gradle.documentation.org.gradle.api.Project.apply.plugin.sonar.non-html=\
  Provides integration with the Sonar  code quality platform. Superceeded by the sonar-runner plugin.
gradle.documentation.org.gradle.api.Project.apply.plugin.sonar=\
  <p>Provides integration with the \
    <a class="ulink" href="http://www.sonarsource.org" target="_top">Sonar</a> \
    code quality platform. Superceeded by the <a class="link" href="http://www.gradle.org/docs/current/userguide/sonar_runner_plugin.html"> \
  <code class="literal">sonar-runner</code></a> plugin.\
  </p>
