# Groovydoc

API Documentation: | `Groovydoc`

Generates HTML API documentation for Groovy source, and optionally, Java source.

This task uses Groovy's Groovydoc tool to generate the API documentation. Please note that the Groovydoc tool has some limitations at the moment. The version of the Groovydoc that is used, is the one from the Groovy dependency defined in the build script.

### Properties

Property | Description
`access` | The most restrictive access level to include in the Groovydoc.
`classpath` | The classpath used to locate classes referenced by the documented sources.
`destinationDir` | The directory to generate the documentation into.
`docTitle` | The title for the package index(first) page. Set to `null` when there is no document title.
`excludes` | The set of exclude patterns.
`footer` | The HTML footer for each page. Set to `null` when there is no footer.
`groovyClasspath` | The classpath containing the Groovy library to be used.
`header` | The HTML header for each page. Set to `null` when there is no header.
`includeAuthor` | Whether to include author paragraphs.
`includeMainForScripts` | Whether to include main method for scripts.
`includes` | The set of include patterns.
`links` | The links to groovydoc/javadoc output at the given URL.
`noTimestamp` | Whether to include timestamp within hidden comment in generated HTML (Groovy >= 2.4.6).
`noVersionStamp` | Whether to include version stamp within hidden comment in generated HTML (Groovy >= 2.4.6).
`overviewText` | Returns a HTML text to be used for overview documentation. Set to `null` when there is no overview text.
`processScripts` | Whether to process scripts.
`source` | The source for this task, after the include and exclude patterns have been applied. Ignores source files which do not exist.
`use` | Whether to create class and package usage pages.
`windowTitle` | The browser window title for the documentation. Set to `null` when there is no window title.

### Methods

Method | Description
`exclude(excludeSpec)` | Adds an exclude spec. This method may be called multiple times to append new specs.The given closure is passed a `FileTreeElement` as its parameter. The closure should return true or false. Example:
`exclude(excludes)` | Adds an Ant style exclude pattern. This method may be called multiple times to append new patterns and multiple patterns may be specified in a single call. If excludes are not provided, then no files will be excluded. If excludes are provided, then files must not match any exclude pattern to be processed.
`exclude(excludes)` | Adds an Ant style exclude pattern. This method may be called multiple times to append new patterns and multiple patterns may be specified in a single call. If excludes are not provided, then no files will be excluded. If excludes are provided, then files must not match any exclude pattern to be processed.
`exclude(excludeSpec)` | Adds an exclude spec. This method may be called multiple times to append new specs. If excludes are not provided, then no files will be excluded. If excludes are provided, then files must not match any exclude pattern to be processed.
`include(includeSpec)` | Adds an include spec. This method may be called multiple times to append new specs. The given closure is passed a `FileTreeElement` as its parameter. If includes are not provided, then all files in this container will be included. If includes are provided, then a file must match at least one of the include patterns or specs to be included.
`include(includes)` | Adds an Ant style include pattern. This method may be called multiple times to append new patterns and multiple patterns may be specified in a single call. If includes are not provided, then all files in this container will be included. If includes are provided, then a file must match at least one of the include patterns to be processed.
`include(includes)` | Adds an Ant style include pattern. This method may be called multiple times to append new patterns and multiple patterns may be specified in a single call. If includes are not provided, then all files in this container will be included. If includes are provided, then a file must match at least one of the include patterns to be processed.
`include(includeSpec)` | Adds an include spec. This method may be called multiple times to append new specs. If includes are not provided, then all files in this container will be included. If includes are provided, then a file must match at least one of the include patterns or specs to be included.
`link(url, packages)` | Add links to groovydoc/javadoc output at the given URL.
`source(sources)` | Adds some source to this task. The given source objects will be evaluated as per `Project.files(java.lang.Object[])`.

### Script blocks

No script blocks

### Property details

#### ``Property`<`GroovydocAccess`>` `access`

The most restrictive access level to include in the Groovydoc.

For example, to include classes and members with package, protected, and public access, use `GroovydocAccess.PACKAGE`.

Default with `groovy` plugin:
  `GroovydocAccess.PROTECTED`

#### `FileCollection` `classpath`

The classpath used to locate classes referenced by the documented sources.

Default with `groovy` plugin:
  `sourceSets.main.output + sourceSets.main.compileClasspath`

#### `File` `destinationDir`

The directory to generate the documentation into.

Default with `groovy` plugin:
  ``${project.docsDir}`/groovydoc`

#### `String` `docTitle`

The title for the package index(first) page. Set to `null` when there is no document title.

Default with `groovy` plugin:
  `project.reporting.apiDocTitle`

#### ``Set`<`String`>` `excludes`

The set of exclude patterns.

Default with `groovy` plugin:
  `[]`

#### `String` `footer`

The HTML footer for each page. Set to `null` when there is no footer.

Default with `groovy` plugin:
  `null`

#### `FileCollection` `groovyClasspath`

The classpath containing the Groovy library to be used.

Default with `groovy` plugin:
  `project.configurations.groovy`

#### `String` `header`

The HTML header for each page. Set to `null` when there is no header.

Default with `groovy` plugin:
  `null`

#### ``Property`<`Boolean`>` `includeAuthor`

Whether to include author paragraphs.

Default with `groovy` plugin:
  `false`

#### ``Property`<`Boolean`>` `includeMainForScripts`

Whether to include main method for scripts.

Default with `groovy` plugin:
  `true`

#### ``Set`<`String`>` `includes`

The set of include patterns.

Default with `groovy` plugin:
  `[]`

#### ``Set`<`Link`>` `links`

The links to groovydoc/javadoc output at the given URL.

Default with `groovy` plugin:
  `[]`

#### `boolean` `noTimestamp`

Whether to include timestamp within hidden comment in generated HTML (Groovy >= 2.4.6).

Default with `groovy` plugin:
  `false`

#### `boolean` `noVersionStamp`

Whether to include version stamp within hidden comment in generated HTML (Groovy >= 2.4.6).

Default with `groovy` plugin:
  `false`

#### `TextResource` `overviewText`

Returns a HTML text to be used for overview documentation. Set to `null` when there is no overview text.

Default with `groovy` plugin:
  `null`

#### ``Property`<`Boolean`>` `processScripts`

Whether to process scripts.

Default with `groovy` plugin:
  `true`

#### `FileTree` `source` (read-only)

The source for this task, after the include and exclude patterns have been applied. Ignores source files which do not exist.

The `PathSensitivity` for the sources is configured to be `PathSensitivity.ABSOLUTE`. If your sources are less strict, please change it accordingly by overriding this method in your subclass.

Default with `groovy` plugin:
  `sourceSets.main.groovy`

#### `boolean` `use`

Whether to create class and package usage pages.

Default with `groovy` plugin:
  `false`

#### `String` `windowTitle`

The browser window title for the documentation. Set to `null` when there is no window title.

Default with `groovy` plugin:
  `project.reporting.apiDocTitle`

### Method details

#### `SourceTask` `exclude`(`Closure` excludeSpec)

Adds an exclude spec. This method may be called multiple times to append new specs.The given closure is passed a `FileTreeElement` as its parameter. The closure should return true or false. Example:

    copySpec {
      from 'source'
      into 'destination'
      //an example of excluding files from certain configuration:
      exclude { it.file in configurations.someConf.files }
    }

If excludes are not provided, then no files will be excluded. If excludes are provided, then files must not match any exclude pattern to be processed.

#### `SourceTask` `exclude`(``Iterable`<`String`>` excludes)

Adds an Ant style exclude pattern. This method may be called multiple times to append new patterns and multiple patterns may be specified in a single call. If excludes are not provided, then no files will be excluded. If excludes are provided, then files must not match any exclude pattern to be processed.

#### `SourceTask` `exclude`(``String`...` excludes)

Adds an Ant style exclude pattern. This method may be called multiple times to append new patterns and multiple patterns may be specified in a single call. If excludes are not provided, then no files will be excluded. If excludes are provided, then files must not match any exclude pattern to be processed.

#### `SourceTask` `exclude`(``Spec`<`FileTreeElement`>` excludeSpec)

Adds an exclude spec. This method may be called multiple times to append new specs. If excludes are not provided, then no files will be excluded. If excludes are provided, then files must not match any exclude pattern to be processed.

#### `SourceTask` `include`(`Closure` includeSpec)

Adds an include spec. This method may be called multiple times to append new specs. The given closure is passed a `FileTreeElement` as its parameter. If includes are not provided, then all files in this container will be included. If includes are provided, then a file must match at least one of the include patterns or specs to be included.

#### `SourceTask` `include`(``Iterable`<`String`>` includes)

Adds an Ant style include pattern. This method may be called multiple times to append new patterns and multiple patterns may be specified in a single call. If includes are not provided, then all files in this container will be included. If includes are provided, then a file must match at least one of the include patterns to be processed.

#### `SourceTask` `include`(``String`...` includes)

Adds an Ant style include pattern. This method may be called multiple times to append new patterns and multiple patterns may be specified in a single call. If includes are not provided, then all files in this container will be included. If includes are provided, then a file must match at least one of the include patterns to be processed.

#### `SourceTask` `include`(``Spec`<`FileTreeElement`>` includeSpec)

Adds an include spec. This method may be called multiple times to append new specs. If includes are not provided, then all files in this container will be included. If includes are provided, then a file must match at least one of the include patterns or specs to be included.

#### `void` `link`(`String` url, ``String`...` packages)

Add links to groovydoc/javadoc output at the given URL.

#### `SourceTask` `source`(``Object`...` sources)

Adds some source to this task. The given source objects will be evaluated as per `Project.files(java.lang.Object[])`.