Package org.gradle.api.tasks.compile

## Class CompileOptions

- java.lang.Object
- - org.gradle.api.tasks.compile.AbstractOptions
  - - org.gradle.api.tasks.compile.CompileOptions

- All Implemented Interfaces:
    `java.io.Serializable`

      public abstract class CompileOptions
      extends AbstractOptions

  Main options for Java compilation.
  See Also:
    Serialized Form

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `CompileOptions​(ObjectFactory objectFactory)` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `CompileOptions` | `debug​(java.util.Map<java.lang.String,​java.lang.Object> debugArgs)` | Convenience method to set `DebugOptions` with named parameter syntax.
    `CompileOptions` | `fork​(java.util.Map<java.lang.String,​java.lang.Object> forkArgs)` | Convenience method to set `ForkOptions` with named parameter syntax.
    `java.util.List<java.lang.String>` | `getAllCompilerArgs()` | Returns all compiler arguments, added to the `getCompilerArgs()` or the `getCompilerArgumentProviders()` property.
    `java.io.File` | `getAnnotationProcessorGeneratedSourcesDirectory()` | Deprecated. Use `getGeneratedSourceOutputDirectory()` instead.
    `FileCollection` | `getAnnotationProcessorPath()` | Returns the classpath to use to load annotation processors.
    `FileCollection` | `getBootstrapClasspath()` | Returns the bootstrap classpath to be used for the compiler process.
    `java.util.List<java.lang.String>` | `getCompilerArgs()` | Returns any additional arguments to be passed to the compiler.
    `java.util.List<CommandLineArgumentProvider>` | `getCompilerArgumentProviders()` | Compiler argument providers.
    `DebugOptions` | `getDebugOptions()` | Returns options for generating debugging information.
    `java.lang.String` | `getEncoding()` | Returns the character encoding to be used when reading source files.
    `java.lang.String` | `getExtensionDirs()` | Returns the extension dirs to be used for the compiler process.
    `ForkOptions` | `getForkOptions()` | Returns options for running the compiler in a child process.
    `DirectoryProperty` | `getGeneratedSourceOutputDirectory()` | Returns the directory to place source files generated by annotation processors.
    `DirectoryProperty` | `getHeaderOutputDirectory()` | If this option is set to a non-null directory, it will be passed to the Java compiler's `-h` option, prompting it to generate native headers to that directory.
    `Property<java.lang.Boolean>` | `getIncrementalAfterFailure()` | Used to enable or disable incremental compilation after a failure.
    `Property<java.lang.String>` | `getJavaModuleMainClass()` | Set the main class of the Java module, if the module is supposed to be executable.
    `Property<java.lang.String>` | `getJavaModuleVersion()` | Set the version of the Java module.
    `Property<java.lang.Integer>` | `getRelease()` | Configures the Java language version for this compile task (`--release` compiler flag).
    `FileCollection` | `getSourcepath()` | The source path to use for the compilation.
    `boolean` | `isDebug()` | Tells whether to include debugging information in the generated class files.
    `boolean` | `isDeprecation()` | Tells whether to log details of usage of deprecated members or classes.
    `boolean` | `isFailOnError()` | Tells whether to fail the build when compilation fails.
    `boolean` | `isFork()` | Tells whether to run the compiler in its own process.
    `boolean` | `isIncremental()` | informs whether to use incremental compilation feature.
    `boolean` | `isListFiles()` | Tells whether to log the files to be compiled.
    `boolean` | `isVerbose()` | Tells whether to produce verbose output.
    `boolean` | `isWarnings()` | Tells whether to log warning messages.
    `void` | `setAnnotationProcessorGeneratedSourcesDirectory​(java.io.File file)` | Deprecated. Use `getGeneratedSourceOutputDirectory()`.set() instead.
    `void` | `setAnnotationProcessorGeneratedSourcesDirectory​(Provider<java.io.File> file)` | Sets the directory to place source files generated by annotation processors.
    `void` | `setAnnotationProcessorPath​(FileCollection annotationProcessorPath)` | Set the classpath to use to load annotation processors.
    `void` | `setBootstrapClasspath​(FileCollection bootstrapClasspath)` | Sets the bootstrap classpath to be used for the compiler process.
    `void` | `setCompilerArgs​(java.util.List<java.lang.String> compilerArgs)` | Sets any additional arguments to be passed to the compiler.
    `void` | `setDebug​(boolean debug)` | Sets whether to include debugging information in the generated class files.
    `void` | `setDebugOptions​(DebugOptions debugOptions)` | Sets options for generating debugging information.
    `void` | `setDeprecation​(boolean deprecation)` | Sets whether to log details of usage of deprecated members or classes.
    `void` | `setEncoding​(java.lang.String encoding)` | Sets the character encoding to be used when reading source files.
    `void` | `setExtensionDirs​(java.lang.String extensionDirs)` | Sets the extension dirs to be used for the compiler process.
    `void` | `setFailOnError​(boolean failOnError)` | Sets whether to fail the build when compilation fails.
    `void` | `setFork​(boolean fork)` | Sets whether to run the compiler in its own process.
    `void` | `setForkOptions​(ForkOptions forkOptions)` | Sets options for running the compiler in a child process.
    `CompileOptions` | `setIncremental​(boolean incremental)` | Configure the java compilation to be incremental (e.g.
    `void` | `setListFiles​(boolean listFiles)` | Sets whether to log the files to be compiled.
    `void` | `setSourcepath​(FileCollection sourcepath)` | Sets the source path to use for the compilation.
    `void` | `setVerbose​(boolean verbose)` | Sets whether to produce verbose output.
    `void` | `setWarnings​(boolean warnings)` | Sets whether to log warning messages.

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

      `define`

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

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

- - ### Constructor Detail

    - #### CompileOptions

          @Inject
          public CompileOptions​(ObjectFactory objectFactory)

  - ### Method Detail

    - #### isFailOnError

          @Input
          public boolean isFailOnError()

      Tells whether to fail the build when compilation fails. Defaults to `true`.

    - #### setFailOnError

          public void setFailOnError​(boolean failOnError)

      Sets whether to fail the build when compilation fails. Defaults to `true`.

    - #### isVerbose

          @Console
          public boolean isVerbose()

      Tells whether to produce verbose output. Defaults to `false`.

    - #### setVerbose

          public void setVerbose​(boolean verbose)

      Sets whether to produce verbose output. Defaults to `false`.

    - #### isListFiles

          @Console
          public boolean isListFiles()

      Tells whether to log the files to be compiled. Defaults to `false`.

    - #### setListFiles

          public void setListFiles​(boolean listFiles)

      Sets whether to log the files to be compiled. Defaults to `false`.

    - #### isDeprecation

          @Console
          public boolean isDeprecation()

      Tells whether to log details of usage of deprecated members or classes. Defaults to `false`.

    - #### setDeprecation

          public void setDeprecation​(boolean deprecation)

      Sets whether to log details of usage of deprecated members or classes. Defaults to `false`.

    - #### isWarnings

          @Console
          public boolean isWarnings()

      Tells whether to log warning messages. The default is `true`.

    - #### setWarnings

          public void setWarnings​(boolean warnings)

      Sets whether to log warning messages. The default is `true`.

    - #### getEncoding

          @Nullable
          @Optional
          @Input
          public java.lang.String getEncoding()

      Returns the character encoding to be used when reading source files. Defaults to `null`, in which case the platform default encoding will be used.

    - #### setEncoding

          public void setEncoding​(@Nullable
                                  java.lang.String encoding)

      Sets the character encoding to be used when reading source files. Defaults to `null`, in which case the platform default encoding will be used.

    - #### isDebug

          @Input
          public boolean isDebug()

      Tells whether to include debugging information in the generated class files. Defaults to `true`. See `DebugOptions.getDebugLevel()` for which debugging information will be generated.

    - #### setDebug

          public void setDebug​(boolean debug)

      Sets whether to include debugging information in the generated class files. Defaults to `true`. See `DebugOptions.getDebugLevel()` for which debugging information will be generated.

    - #### getDebugOptions

          public DebugOptions getDebugOptions()

      Returns options for generating debugging information.

    - #### setDebugOptions

          public void setDebugOptions​(DebugOptions debugOptions)

      Sets options for generating debugging information.

    - #### isFork

          @Input
          public boolean isFork()

      Tells whether to run the compiler in its own process. Note that this does not necessarily mean that a new process will be created for each compile task. Defaults to `false`.

    - #### setFork

          public void setFork​(boolean fork)

      Sets whether to run the compiler in its own process. Note that this does not necessarily mean that a new process will be created for each compile task. Defaults to `false`.

    - #### getForkOptions

          public ForkOptions getForkOptions()

      Returns options for running the compiler in a child process.

    - #### setForkOptions

          public void setForkOptions​(ForkOptions forkOptions)

      Sets options for running the compiler in a child process.

    - #### getBootstrapClasspath

          @Nullable
          @Optional
          @CompileClasspath
          public FileCollection getBootstrapClasspath()

      Returns the bootstrap classpath to be used for the compiler process. Defaults to `null`.
      Since:
        4.3

    - #### setBootstrapClasspath

          public void setBootstrapClasspath​(@Nullable
                                            FileCollection bootstrapClasspath)

      Sets the bootstrap classpath to be used for the compiler process. Defaults to `null`.
      Since:
        4.3

    - #### getExtensionDirs

          @Nullable
          @Optional
          @Input
          public java.lang.String getExtensionDirs()

      Returns the extension dirs to be used for the compiler process. Defaults to `null`.

    - #### setExtensionDirs

          public void setExtensionDirs​(@Nullable
                                       java.lang.String extensionDirs)

      Sets the extension dirs to be used for the compiler process. Defaults to `null`.

    - #### getCompilerArgs

          @Input
          public java.util.List<java.lang.String> getCompilerArgs()

      Returns any additional arguments to be passed to the compiler. Defaults to the empty list. Compiler arguments not supported by the DSL can be added here. For example, it is possible to pass the `--release` option of JDK 9:

          compilerArgs.addAll(['--release', '7'])

      Note that if `--release` is added then `-target` and `-source` are ignored.

    - #### getAllCompilerArgs

          @Internal
          public java.util.List<java.lang.String> getAllCompilerArgs()

      Returns all compiler arguments, added to the `getCompilerArgs()` or the `getCompilerArgumentProviders()` property.
      Since:
        4.5

    - #### getCompilerArgumentProviders

          public java.util.List<CommandLineArgumentProvider> getCompilerArgumentProviders()

      Compiler argument providers.
      Since:
        4.5

    - #### setCompilerArgs

          public void setCompilerArgs​(java.util.List<java.lang.String> compilerArgs)

      Sets any additional arguments to be passed to the compiler. Defaults to the empty list.

    - #### fork

          public CompileOptions fork​(java.util.Map<java.lang.String,​java.lang.Object> forkArgs)

      Convenience method to set `ForkOptions` with named parameter syntax. Calling this method will set `fork` to `true`.

    - #### debug

          public CompileOptions debug​(java.util.Map<java.lang.String,​java.lang.Object> debugArgs)

      Convenience method to set `DebugOptions` with named parameter syntax. Calling this method will set `debug` to `true`.

    - #### setIncremental

          public CompileOptions setIncremental​(boolean incremental)

      Configure the java compilation to be incremental (e.g. compiles only those java classes that were changed or that are dependencies to the changed classes).

    - #### isIncremental

          @Internal
          public boolean isIncremental()

      informs whether to use incremental compilation feature. See `setIncremental(boolean)`

    - #### getIncrementalAfterFailure

          @Input
          @Optional
          @Incubating
          public Property<java.lang.Boolean> getIncrementalAfterFailure()

      Used to enable or disable incremental compilation after a failure.

      By default, incremental compilation after a failure is enabled for Java and Groovy. It has no effect for Scala. It has no effect if incremental compilation is not enabled.

      When the Java command line compiler is used, i.e. when a custom java home is passed to forkOptions.javaHome or javac is passed to forkOptions.executable, this optimization is automatically disabled, since the compiler is not invoked via the compiler API.

      Since:
        7.6

    - #### getSourcepath

          @Optional
          @Nullable
          @IgnoreEmptyDirectories
          @PathSensitive(RELATIVE)
          @InputFiles
          public FileCollection getSourcepath()

      The source path to use for the compilation.

      The source path indicates the location of source files that may be compiled if necessary. It is effectively a complement to the class path, where the classes to be compiled against are in source form. It does not indicate the actual primary source being compiled.

      The source path feature of the Java compiler is rarely needed for modern builds that use dependency management.

      The default value for the source path is `null`, which indicates an empty source path. Note that this is different to the default value for the `-sourcepath` option for `javac`, which is to use the value specified by `-classpath`. If you wish to use any source path, it must be explicitly set.

      Returns:
        the source path
      See Also:
        `setSourcepath(FileCollection)`

    - #### setSourcepath

          public void setSourcepath​(@Nullable
                                    FileCollection sourcepath)

      Sets the source path to use for the compilation.
      Parameters:
        `sourcepath` - the source path

    - #### getAnnotationProcessorPath

          @Nullable
          @Optional
          @Classpath
          public FileCollection getAnnotationProcessorPath()

      Returns the classpath to use to load annotation processors. This path is also used for annotation processor discovery.
      Returns:
        The annotation processor path, or `null` if annotation processing is disabled.
      Since:
        3.4

    - #### setAnnotationProcessorPath

          public void setAnnotationProcessorPath​(@Nullable
                                                 FileCollection annotationProcessorPath)

      Set the classpath to use to load annotation processors. This path is also used for annotation processor discovery.
      Parameters:
        `annotationProcessorPath` - The annotation processor path, or `null` to disable annotation processing.
      Since:
        3.4

    - #### getRelease

          @Input
          @Optional
          public Property<java.lang.Integer> getRelease()

      Configures the Java language version for this compile task (`--release` compiler flag).

      If set, it will take precedences over the `AbstractCompile.getSourceCompatibility()` and `AbstractCompile.getTargetCompatibility()` settings.

      This option is only taken into account by the `JavaCompile` task.

      Since:
        6.6

    - #### getJavaModuleVersion

          @Optional
          @Input
          public Property<java.lang.String> getJavaModuleVersion()

      Set the version of the Java module.
      Since:
        6.4

    - #### getJavaModuleMainClass

          @Optional
          @Input
          public Property<java.lang.String> getJavaModuleMainClass()

      Set the main class of the Java module, if the module is supposed to be executable.
      Since:
        6.4

    - #### getGeneratedSourceOutputDirectory

          @Optional
          @OutputDirectory
          public DirectoryProperty getGeneratedSourceOutputDirectory()

      Returns the directory to place source files generated by annotation processors.
      Since:
        6.3

    - #### getAnnotationProcessorGeneratedSourcesDirectory

          @Nullable
          @Deprecated
          @ReplacedBy("generatedSourceOutputDirectory")
          public java.io.File getAnnotationProcessorGeneratedSourcesDirectory()

      Deprecated.
      Use `getGeneratedSourceOutputDirectory()` instead. This method will be removed in Gradle 9.0.
      Returns the directory to place source files generated by annotation processors.
      Since:
        4.3

    - #### setAnnotationProcessorGeneratedSourcesDirectory

          @Deprecated
          public void setAnnotationProcessorGeneratedSourcesDirectory​(@Nullable
                                                                      java.io.File file)

      Deprecated.
      Use `getGeneratedSourceOutputDirectory()`.set() instead. This method will be removed in Gradle 9.0.
      Sets the directory to place source files generated by annotation processors.
      Since:
        4.3

    - #### setAnnotationProcessorGeneratedSourcesDirectory

          public void setAnnotationProcessorGeneratedSourcesDirectory​(Provider<java.io.File> file)

      Sets the directory to place source files generated by annotation processors.
      Since:
        4.3

    - #### getHeaderOutputDirectory

          @Optional
          @OutputDirectory
          public DirectoryProperty getHeaderOutputDirectory()

      If this option is set to a non-null directory, it will be passed to the Java compiler's `-h` option, prompting it to generate native headers to that directory.
      Since:
        4.10