Interface JavaPluginExtension


  • public interface JavaPluginExtension
    Common configuration for JVM (Java) based projects. This extension is added by the JavaBasePlugin and would be more appropriately named the JvmPluginExtension extension. It is used to configure many of the project's JVM-related settings and behavior.
    Since:
    4.10
    • Method Detail

      • getSourceCompatibility

        JavaVersion getSourceCompatibility()
        Returns the source compatibility used for compiling Java sources.
      • setSourceCompatibility

        void setSourceCompatibility​(JavaVersion value)
        Sets the source compatibility used for compiling Java sources.

        This property cannot be set if a toolchain has been configured.

        Parameters:
        value - The value for the source compatibility
        See Also:
        toolchain(Action)
      • getTargetCompatibility

        JavaVersion getTargetCompatibility()
        Returns the target compatibility used for compiling Java sources.
      • setTargetCompatibility

        void setTargetCompatibility​(JavaVersion value)
        Sets the target compatibility used for compiling Java sources.

        This property cannot be set if a toolchain has been configured.

        Parameters:
        value - The value for the target compatibility
        See Also:
        toolchain(Action)
      • registerFeature

        void registerFeature​(java.lang.String name,
                             Action<? super FeatureSpec> configureAction)
        Registers a feature.

        The new feature will have a default capability corresponding to the "group", "name" + feature name and version of this project. For example, if the group of the component is "org", that the project name is "lib" the version is "1.0" and the feature name is "myFeature", then a capability named "org:lib-my-feature:1.0" is automatically added.

        In order to consume this feature in another module add a dependency like the following:

          dependencies {
              implementation(project(":lib")) {
                  capabilities {
                      requireCapability("org:lib-my-feature:1.0")
                  }
              }
          }
         
        The FeatureSpec.capability(String, String, String) method can be used to refine the capabilities of this feature.
        Parameters:
        name - the name of the feature
        configureAction - the configuration for the feature
        Since:
        5.3
      • disableAutoTargetJvm

        void disableAutoTargetJvm()
        If this method is called, Gradle will not automatically try to fetch dependencies which have a JVM version compatible with the target compatibility of this module.

        This should be used whenever the default behavior is not applicable, in particular when for some reason it's not possible to split a module and that this module only has some classes which require dependencies on higher versions.

        Since:
        5.3
      • withJavadocJar

        void withJavadocJar()
        Adds a task javadocJar that will package the output of the javadoc task in a JAR with classifier javadoc.

        The produced artifact is registered as a documentation variant on the java component and added as a dependency on the assemble task. This means that if maven-publish or ivy-publish is also applied, the javadoc JAR will be published.

        If the project already has a task named javadocJar then no task is created.

        The publishing of the Javadoc variant can also be disabled using ConfigurationVariantDetails.skip() through AdhocComponentWithVariants.withVariantsFromConfiguration(Configuration, Action), if it should only be built locally by calling or wiring the ':javadocJar' task.

        Since:
        6.0
      • withSourcesJar

        void withSourcesJar()
        Adds a task sourcesJar that will package the Java sources of the main SourceSet in a JAR with classifier sources.

        The produced artifact is registered as a documentation variant on the java component and added as a dependency on the assemble task. This means that if maven-publish or ivy-publish is also applied, the sources JAR will be published.

        If the project already has a task named sourcesJar then no task is created.

        The publishing of the sources variant can be disabled using ConfigurationVariantDetails.skip() through AdhocComponentWithVariants.withVariantsFromConfiguration(Configuration, Action), if it should only be built locally by calling or wiring the ':sourcesJar' task.

        Since:
        6.0
      • getModularity

        ModularitySpec getModularity()
        Configure the module path handling for tasks that have a 'classpath' as input. The module classpath handling defines to determine for each entry if it is passed to Java tools using '-classpath' or '--module-path'.
        Since:
        6.4
      • getToolchain

        JavaToolchainSpec getToolchain()
        Gets the project wide toolchain requirements that will be used for tasks requiring a tool from the toolchain (e.g. JavaCompile).

        Configuring a toolchain cannot be used together with sourceCompatibility or targetCompatibility on this extension. Both values will be sourced from the toolchain.

        Since:
        6.7
      • toolchain

        JavaToolchainSpec toolchain​(Action<? super JavaToolchainSpec> action)
        Configures the project wide toolchain requirements for tasks that require a tool from the toolchain (e.g. JavaCompile).

        Configuring a toolchain cannot be used together with sourceCompatibility or targetCompatibility on this extension. Both values will be sourced from the toolchain.

        Since:
        6.7
      • consistentResolution

        @Incubating
        void consistentResolution​(Action<? super JavaResolutionConsistency> action)
        Configure the dependency resolution consistency for this Java project.
        Parameters:
        action - the configuration action
        Since:
        6.8
      • sourceSets

        java.lang.Object sourceSets​(Closure closure)
        Configures the source sets of this project.

        The given closure is executed to configure the SourceSetContainer. The SourceSetContainer is passed to the closure as its delegate.

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

         plugins {
             id 'java'
         }
        
         sourceSets {
           main {
             java {
               exclude 'some/unwanted/package/**'
             }
           }
         }
         
        Parameters:
        closure - The closure to execute.
        Returns:
        NamedDomainObjectContainer<org.gradle.api.tasks.SourceSet>
        Since:
        7.1
      • getDocsDir

        DirectoryProperty getDocsDir()
        Returns a file pointing to the root directory supposed to be used for all docs.
        Since:
        7.1
      • getTestResultsDir

        DirectoryProperty getTestResultsDir()
        Returns a file pointing to the root directory of the test results.
        Since:
        7.1
      • getTestReportDir

        DirectoryProperty getTestReportDir()
        Returns a file pointing to the root directory to be used for reports.
        Since:
        7.1
      • setSourceCompatibility

        void setSourceCompatibility​(java.lang.Object value)
        Sets the source compatibility used for compiling Java sources.
        Parameters:
        value - The value for the source compatibility as defined by JavaVersion.toVersion(Object)
        Since:
        7.1
      • setTargetCompatibility

        void setTargetCompatibility​(java.lang.Object value)
        Sets the target compatibility used for compiling Java sources.
        Parameters:
        value - The value for the target compatibility as defined by JavaVersion.toVersion(Object)
        Since:
        7.1
      • manifest

        Manifest manifest()
        Creates a new instance of a Manifest.
        Since:
        7.1
      • manifest

        Manifest manifest​(@DelegatesTo(Manifest.class)
                          Closure closure)
        Creates and configures a new instance of a Manifest. The given closure configures the new manifest instance before it is returned.
        Parameters:
        closure - The closure to use to configure the manifest.
        Since:
        7.1
      • manifest

        Manifest manifest​(Action<? super Manifest> action)
        Creates and configures a new instance of a Manifest.
        Parameters:
        action - The action to use to configure the manifest.
        Since:
        7.1
      • getAutoTargetJvmDisabled

        boolean getAutoTargetJvmDisabled()
        Tells if automatic JVM targeting is enabled. When disabled, Gradle will not automatically try to get dependencies corresponding to the same (or compatible) level as the target compatibility of this module.
        Since:
        7.1