# SourceSet

API Documentation: | `SourceSet`

A `SourceSet` represents a logical group of Java source and resources.

See the example below how `SourceSet` 'main' is accessed and how the `SourceDirectorySet` 'java' is configured to exclude some package from compilation.

    apply plugin: 'java'

    sourceSets {
      main {
        java {
          exclude 'some/unwanted/package/**'
        }
      }
    }

### Properties

Property | Description
`allJava` | All Java source files for this source set. This includes, for example, source which is directly compiled, and source which is indirectly compiled through joint compilation.
`allSource` | All source files for this source set.
`compileClasspath` | The classpath used to compile this source.
`java` | The Java source which is to be compiled by the Java compiler into the class output directory.
`name` | The name of this source set.
`output` | `SourceSetOutput` is a `FileCollection` of all output directories (compiled classes, processed resources, etc.) and it provides means to configure the default output dirs and register additional output dirs. See examples in `SourceSetOutput`
`resources` | The non-Java resources which are to be copied into the resources output directory.
`runtimeClasspath` | The classpath used to execute this source.

#### Properties added by the `antlr` plugin

Property | Description
`antlr` | All Antlr source for this source set.

#### Properties added by the `groovy` plugin

Property | Description
`allGroovy` | All Groovy source for this source set.
`groovy` | The source to be compiled by the Groovy compiler for this source set. Any Java source present in this set will be passed to the Groovy compiler for joint compilation.

#### Properties added by the `scala` plugin

Property | Description
`allScala` | All Scala source for this source set.
`scala` | The source to be compiled by the Scala compiler for this source set. This may contain both Java and Scala source files.

### Methods

Method | Description
`compiledBy(taskPaths)` | Registers a set of tasks which are responsible for compiling this source set into the classes directory. The paths are evaluated as per `Task.dependsOn(java.lang.Object[])`.
`getCompileTaskName(language)` | Returns the name of a compile task for this source set.
`getTaskName(verb, target)` | Returns the name of a task for this source set.

### Script blocks

Block | Description
`java` | Configures the Java source for this set.
`resources` | Configures the non-Java resources for this set.

#### Script blocks added by the `antlr` plugin

Block | Description
`antlr` | Configures the Antlr source for this set. The given closure is used to configure the `SourceDirectorySet` (see `AntlrSourceVirtualDirectory.getAntlr()`) which contains the Antlr source.

#### Script blocks added by the `groovy` plugin

Block | Description
`groovy` | Configures the Groovy source for this set.

#### Script blocks added by the `scala` plugin

Block | Description
`scala` | Configures the Scala source for this set.

### Property details

#### `SourceDirectorySet` `allJava` (read-only)

All Java source files for this source set. This includes, for example, source which is directly compiled, and source which is indirectly compiled through joint compilation.

Default with `java` plugin:
  `[java]`

#### `SourceDirectorySet` `allSource` (read-only)

All source files for this source set.

Default with `java` plugin:
  `[java, resources]`

#### `FileCollection` `compileClasspath`

The classpath used to compile this source.

Default with `java` plugin:
  `project.configurations.compile` (or `project.configurations.testCompile` for the `test` source set).

#### `SourceDirectorySet` `java` (read-only)

The Java source which is to be compiled by the Java compiler into the class output directory.

Default with `java` plugin:
  `[`${project.projectDir}`/src/`${sourceSet.name}`/java]`

#### `String` `name` (read-only)

The name of this source set.

#### `SourceSetOutput` `output` (read-only)

`SourceSetOutput` is a `FileCollection` of all output directories (compiled classes, processed resources, etc.) and it provides means to configure the default output dirs and register additional output dirs. See examples in `SourceSetOutput`

Default with `java` plugin:
  See `SourceSetOutput`

#### `SourceDirectorySet` `resources` (read-only)

The non-Java resources which are to be copied into the resources output directory.

Default with `java` plugin:
  `[`${project.projectDir}`/src/`${sourceSet.name}`/resources]`

#### `FileCollection` `runtimeClasspath`

The classpath used to execute this source.

Default with `java` plugin:
  `sourceSet.output + project.configurations.runtime` (or `sourceSet.output + project.configurations.testRuntime` for the `test` source set).

#### `SourceDirectorySet` `antlr` (read-only)

All Antlr source for this source set.

#### `SourceDirectorySet` `allGroovy` (read-only)

All Groovy source for this source set.

#### `SourceDirectorySet` `groovy` (read-only)

The source to be compiled by the Groovy compiler for this source set. Any Java source present in this set will be passed to the Groovy compiler for joint compilation.

#### `SourceDirectorySet` `allScala` (read-only)

All Scala source for this source set.

#### `SourceDirectorySet` `scala` (read-only)

The source to be compiled by the Scala compiler for this source set. This may contain both Java and Scala source files.

### Method details

#### `SourceSet` `compiledBy`(``Object`...` taskPaths)

Registers a set of tasks which are responsible for compiling this source set into the classes directory. The paths are evaluated as per `Task.dependsOn(java.lang.Object[])`.

#### `String` `getCompileTaskName`(`String` language)

Returns the name of a compile task for this source set.

#### `String` `getTaskName`(`String` verb, `String` target)

Returns the name of a task for this source set.

### Script block details

#### `java` { }

Configures the Java source for this set.

The given closure is used to configure the `SourceDirectorySet` which contains the Java source.

Delegates to:
  `SourceDirectorySet` from `java`

#### `resources` { }

Configures the non-Java resources for this set.

The given closure is used to configure the `SourceDirectorySet` which contains the resources.

Delegates to:
  `SourceDirectorySet` from `resources`

#### `antlr` { }

Configures the Antlr source for this set. The given closure is used to configure the `SourceDirectorySet` (see `AntlrSourceVirtualDirectory.getAntlr()`) which contains the Antlr source.

Delegates to:
  `SourceDirectorySet` from `antlr`

#### `groovy` { }

Configures the Groovy source for this set.

The given closure is used to configure the `SourceDirectorySet` which contains the Groovy source.

Delegates to:
  `SourceDirectorySet` from `groovy`

#### `scala` { }

Configures the Scala source for this set.

The given closure is used to configure the `SourceDirectorySet` which contains the Scala source.

Delegates to:
  `SourceDirectorySet` from `scala`