# GroovyCompile

API Documentation: | `GroovyCompile`

Compiles Groovy source files, and optionally, Java source files.

### Properties

Property | Description
`classpath` | The classpath to use to compile the source files.
`destinationDir` | Deprecated Replaced The directory to generate the `.class` files into.
`destinationDirectory` | The directory property that represents the directory to generate the `.class` files into.
`excludes` | The set of exclude patterns.
`groovyClasspath` | The classpath containing the version of Groovy to use for compilation.
`groovyOptions` | Gets the options for the Groovy compilation. To set specific options for the nested Java compilation, use `GroovyCompile.getOptions()`.
`includes` | The set of include patterns.
`javaLauncher` | The toolchain `JavaLauncher` to use for executing the Groovy compiler.
`options` | The options for Java compilation.
`source` | The source for this task, after the include and exclude patterns have been applied. Ignores source files which do not exist.
`sourceCompatibility` | The Java language level to use to compile the source files.
`targetCompatibility` | The target JVM to generate the `.class` files for.

### 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(java.lang.Object[])`.

### Script blocks

No script blocks

### Property details

#### `FileCollection` `classpath`

The classpath to use to compile the source files.

Default with `groovy` plugin:
  ``sourceSet`.compileClasspath`

#### `File` `destinationDir`

Note: This property is deprecated and will be removed in the next major version of Gradle.

Note: This property has been replaced by destinationDirectory.

The directory to generate the `.class` files into.

Default with `groovy` plugin:
  ``sourceSet`.`sourceDirectorySet`.destinationDirectory`

#### `DirectoryProperty` `destinationDirectory`

The directory property that represents the directory to generate the `.class` files into.

Default with `groovy` plugin:
  ``sourceSet`.`sourceDirectorySet`.destinationDirectory`

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

The set of exclude patterns.

#### `FileCollection` `groovyClasspath`

The classpath containing the version of Groovy to use for compilation.

Default with `groovy` plugin:
  Groovy library found on `classpath`

#### `GroovyCompileOptions` `groovyOptions` (read-only)

Gets the options for the Groovy compilation. To set specific options for the nested Java compilation, use `GroovyCompile.getOptions()`.

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

The set of include patterns.

#### ``Property`<`JavaLauncher`>` `javaLauncher`

The toolchain `JavaLauncher` to use for executing the Groovy compiler.

Default with `groovy` plugin:
  `java.toolchain`

#### `CompileOptions` `options` (read-only)

The options for Java compilation.

#### `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:
  ``sourceSet`.groovy`

#### `String` `sourceCompatibility`

The Java language level to use to compile the source files.

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

#### `String` `targetCompatibility`

The target JVM to generate the `.class` files for.

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

### 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(java.lang.Object[])`.