org.gradle.api.tasks.compile

## Class JavaCompile

- java.lang.Object
- - org.gradle.api.internal.AbstractTask
  - - org.gradle.api.DefaultTask
    - - org.gradle.api.internal.ConventionTask
      - - org.gradle.api.tasks.SourceTask
        - - org.gradle.api.tasks.compile.AbstractCompile
          - - org.gradle.api.tasks.compile.JavaCompile

- All Implemented Interfaces:
    Comparable<Task>, org.gradle.api.internal.DynamicObjectAware, org.gradle.api.internal.IConventionAware, org.gradle.api.internal.TaskInternal, ExtensionAware, Task, PatternFilterable, org.gradle.util.Configurable<Task>
  Direct Known Subclasses:
    PlatformJavaCompile

      @CacheableTask
      public class JavaCompile
      extends AbstractCompile

  Compiles Java source files.

           apply plugin: 'java'

           tasks.withType(JavaCompile) {
               //enable compilation in a separate daemon process
               options.fork = true

               //enable incremental compilation
               options.incremental = true
           }

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from interface org.gradle.api.Task

      `Task.Namer`

  - ### Field Summary

    - ### Fields inherited from class org.gradle.api.tasks.SourceTask

      `source`

    - ### Fields inherited from interface org.gradle.api.Task

      `TASK_ACTION, TASK_DEPENDS_ON, TASK_DESCRIPTION, TASK_GROUP, TASK_NAME, TASK_OVERWRITE, TASK_TYPE`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `JavaCompile()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `compile()`
    `protected void` | `compile(IncrementalTaskInputs inputs)`
    `protected org.gradle.cache.CacheRepository` | `getCacheRepository()`
    `protected org.gradle.internal.hash.FileHasher` | `getCachingFileHasher()`
    `FileCollection` | `getClasspath()` Returns the classpath to use to compile the source files.
    `FileCollection` | `getEffectiveAnnotationProcessorPath()` Returns the path to use for annotation processor discovery.
    `protected org.gradle.api.internal.file.FileOperations` | `getFileOperations()`
    `protected org.gradle.api.internal.tasks.compile.incremental.cache.GeneralCompileCaches` | `getGeneralCompileCaches()`
    `protected org.gradle.api.internal.tasks.JavaToolChainFactory` | `getJavaToolChainFactory()`
    `CompileOptions` | `getOptions()` Returns the compilation options.
    `protected JavaPlatform` | `getPlatform()`
    `FileTree` | `getSource()` Returns the source for this task, after the include and exclude patterns have been applied.
    `protected org.gradle.internal.hash.StreamHasher` | `getStreamHasher()`
    `JavaToolChain` | `getToolChain()` Returns the tool chain that will be used to compile the Java source.
    `void` | `setToolChain(JavaToolChain toolChain)` Sets the tool chain that should be used to compile the Java source.

    - ### Methods inherited from class org.gradle.api.tasks.compile.AbstractCompile

      `getDestinationDir, getSourceCompatibility, getTargetCompatibility, setClasspath, setDestinationDir, setDestinationDir, setSourceCompatibility, setTargetCompatibility`

    - ### Methods inherited from class org.gradle.api.tasks.SourceTask

      `exclude, exclude, exclude, exclude, getExcludes, getIncludes, getPatternSetFactory, include, include, include, include, setExcludes, setIncludes, setSource, setSource, source`

    - ### Methods inherited from class org.gradle.api.internal.ConventionTask

      `conventionMapping, conventionMapping, getConventionMapping`

    - ### Methods inherited from class org.gradle.api.DefaultTask

      `newInputDirectory, newInputFile, newOutputDirectory, newOutputFile`

    - ### Methods inherited from class org.gradle.api.internal.AbstractTask

      `addValidator, appendParallelSafeAction, compareTo, configure, deleteAllActions, dependsOn, dependsOnTaskDidWork, doFirst, doFirst, doFirst, doLast, doLast, doLast, execute, finalizedBy, getActions, getAnt, getAsDynamicObject, getConvention, getDependsOn, getDescription, getDestroyables, getDidWork, getEnabled, getExecuter, getExtensions, getFinalizedBy, getGroup, getIdentityPath, getImpliesSubProjects, getInputs, getLocalState, getLogger, getLogging, getMustRunAfter, getName, getOnlyIf, getOutputs, getPath, getProject, getServices, getShouldRunAfter, getStandardOutputCapture, getState, getTaskActions, getTaskDependencies, getTemporaryDir, getTemporaryDirFactory, getValidators, hasProperty, injectIntoNewInstance, isEnabled, isHasCustomActions, leftShift, mustRunAfter, onlyIf, onlyIf, prependParallelSafeAction, property, setActions, setDependsOn, setDescription, setDidWork, setEnabled, setExecuter, setFinalizedBy, setGroup, setImpliesSubProjects, setMustRunAfter, setOnlyIf, setOnlyIf, setProperty, setShouldRunAfter, shouldRunAfter, toString`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### JavaCompile

          public JavaCompile()

  - ### Method Detail

    - #### getSource

          @PathSensitive(value=NAME_ONLY)
          public FileTree getSource()

      Returns the source for this task, after the include and exclude patterns have been applied. Ignores source files which do not exist.
      Overrides:
        `getSource` in class `SourceTask`
      Returns:
        The source.

    - #### getToolChain

          @Incubating
          public JavaToolChain getToolChain()

      Returns the tool chain that will be used to compile the Java source.
      Returns:
        The tool chain.

    - #### setToolChain

          @Incubating
          public void setToolChain(JavaToolChain toolChain)

      Sets the tool chain that should be used to compile the Java source.
      Parameters:
        `toolChain` - The tool chain.

    - #### compile

          protected void compile(IncrementalTaskInputs inputs)

    - #### getStreamHasher

          @Inject
          protected org.gradle.internal.hash.StreamHasher getStreamHasher()

    - #### getCachingFileHasher

          @Inject
          protected org.gradle.internal.hash.FileHasher getCachingFileHasher()

    - #### getFileOperations

          @Inject
          protected org.gradle.api.internal.file.FileOperations getFileOperations()

    - #### getGeneralCompileCaches

          @Inject
          protected org.gradle.api.internal.tasks.compile.incremental.cache.GeneralCompileCaches getGeneralCompileCaches()

    - #### getCacheRepository

          @Inject
          protected org.gradle.cache.CacheRepository getCacheRepository()

    - #### getJavaToolChainFactory

          @Inject
          protected org.gradle.api.internal.tasks.JavaToolChainFactory getJavaToolChainFactory()

    - #### compile

          protected void compile()

      Specified by:
        `compile` in class `AbstractCompile`

    - #### getPlatform

          protected JavaPlatform getPlatform()

    - #### getOptions

          public CompileOptions getOptions()

      Returns the compilation options.
      Returns:
        The compilation options.

    - #### getClasspath

          @CompileClasspath
          public FileCollection getClasspath()

      Description copied from class: `AbstractCompile`
      Returns the classpath to use to compile the source files.
      Overrides:
        `getClasspath` in class `AbstractCompile`
      Returns:
        The classpath.

    - #### getEffectiveAnnotationProcessorPath

          @Incubating
           @Classpath
          public FileCollection getEffectiveAnnotationProcessorPath()

      Returns the path to use for annotation processor discovery. Returns an empty collection when no processing should be performed, for example when no annotation processors are present in the compile classpath or annotation processing has been disabled.

      You can specify this path using `CompileOptions.setAnnotationProcessorPath(FileCollection)` or `CompileOptions.setCompilerArgs(java.util.List)`. When not explicitly set using one of the methods on `CompileOptions`, the compile classpath will be used when there are annotation processors present in the compile classpath. Otherwise this path will be empty.

      This path is always empty when annotation processing is disabled.

      Since:
        3.4