# Javadoc

API Documentation: | `Javadoc`

Generates HTML API documentation for Java classes.

If you create your own Javadoc tasks remember to specify the 'source' property! Without source the Javadoc task will not create any documentation. Example:

    apply plugin: 'java'

    task myJavadocs(type: Javadoc) {
      source = sourceSets.main.allJava
    }

An example how to create a task that runs a custom doclet implementation:

    apply plugin: 'java'

    configurations {
      jaxDoclet
    }

    dependencies {
      //jaxDoclet "some.interesting:Dependency:1.0"
    }

    task generateRestApiDocs(type: Javadoc) {
      source = sourceSets.main.allJava
      destinationDir = reporting.file("rest-api-docs")
      options.docletpath = configurations.jaxDoclet.files.asType(List)
      options.doclet = "com.lunatech.doclets.jax.jaxrs.JAXRSDoclet"
      options.addStringOption("jaxrscontext", "http://localhost:8080/myapp")
    }

### Properties

Property | Description
`classpath` | The classpath to use to resolve type references in the source code.
`destinationDir` | The directory to generate the documentation into.
`excludes` | The set of exclude patterns.
`executable` | The Javadoc executable to use to generate the Javadoc. When `null`, the Javadoc executable for the current JVM is used.
`failOnError` | Specifies whether this task should fail when errors are encountered during Javadoc generation. When `true`, this task will fail on Javadoc error. When `false`, this task will ignore Javadoc errors.
`includes` | The set of include patterns.
`maxMemory` | The amount of memory allocated to this task.
`options` | The Javadoc generation options.
`source` | The source for this task, after the include and exclude patterns have been applied. Ignores source files which do not exist.
`title` | The title for the generated documentation.

### Property details

#### `FileCollection` `classpath`

The classpath to use to resolve type references in the source code.

Default with `java` plugin:
  `project.sourceSets.main.compileClasspath`

#### `File` `destinationDir`

The directory to generate the documentation into.

Default with `java` plugin:
  ``${project.docsDir}`/javadoc`

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

The set of exclude patterns.

#### `String` `executable`

The Javadoc executable to use to generate the Javadoc. When `null`, the Javadoc executable for the current JVM is used.

Default with `java` plugin:
  `null`

#### `boolean` `failOnError`

Specifies whether this task should fail when errors are encountered during Javadoc generation. When `true`, this task will fail on Javadoc error. When `false`, this task will ignore Javadoc errors.

Default with `java` plugin:
  `true`

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

The set of include patterns.

#### `String` `maxMemory`

The amount of memory allocated to this task.

Default with `java` plugin:
  `null`

#### `MinimalJavadocOptions` `options`

The Javadoc generation options.

#### `FileTree` `source`

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

#### `String` `title`

The title for the generated documentation.

Default with `java` plugin:
  `project.apiDocTitle`

### Script blocks

No script blocks

### 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.
`source(sources)` | Adds some source to this task. The given source objects will be evaluated as per `Project.files()`.

### 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.

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

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