JavaPluginExtension

用于配置基于 JVM (Java) 项目的常见设置。此扩展由 JavaBasePlugin 添加,更恰当的名称应为 JvmPluginExtension 扩展。它用于配置项目的许多与 JVM 相关的设置和行为。

属性

属性描述
docsDir

返回一个文件,指向所有文档的根目录。

sourceCompatibility

用于编译 Java 源码的源兼容性。

sourceSets

源码集容器。

targetCompatibility

用于编译 Java 源码的目标兼容性。

testReportDir

返回一个文件,指向用于报告的根目录。

testResultsDir

返回一个文件,指向测试结果的根目录。

toolchain

获取项目范围内的工具链要求,这些要求将用于需要从工具链获取工具的任务(例如 JavaCompile)。

方法

方法描述
disableAutoTargetJvm()

如果调用此方法,Gradle 将不会自动尝试获取与此模块目标兼容性兼容的 JVM 版本的依赖项。

manifest()

创建一个新的 Manifest 实例。

manifest(closure)

创建并配置一个新的 Manifest 实例。给定的 closure 会在返回新 manifest 实例之前对其进行配置。

manifest(action)

创建并配置一个新的 Manifest 实例。

registerFeature(name, configureAction)

注册一个特性。

toolchain(action)

为需要从工具链获取工具的任务(例如 JavaCompile)配置项目范围内的工具链要求。

withJavadocJar()

添加一个名为 javadocJar 的任务,它会将 javadoc 任务的输出打包到一个带有 classifier javadoc 的 JAR 文件中。

withSourcesJar()

添加一个名为 sourcesJar 的任务,它会将主 SourceSet 的 Java 源码打包到一个带有 classifier sources 的 JAR 文件中。

脚本块

描述
sourceSets

配置此项目的源码集。

属性详情

DirectoryProperty docsDir

返回一个文件,指向所有文档的根目录。

使用 java 插件时的默认值
${project.layout.buildDirectory}/docs

JavaVersion sourceCompatibility

用于编译 Java 源码的源兼容性。

使用 java 插件时的默认值
当前使用的 JVM 的值(例如,在 1.6 JVM 上为 JavaVersion.JAVA_1_6)。

SourceSetContainer sourceSets (只读)

源码集容器。

JavaVersion targetCompatibility

用于编译 Java 源码的目标兼容性。

使用 java 插件时的默认值
project.sourceCompatibility

DirectoryProperty testReportDir

返回一个文件,指向用于报告的根目录。

使用 java 插件时的默认值
${project.reporting.baseDirectory}/tests

DirectoryProperty testResultsDir

返回一个文件,指向测试结果的根目录。

使用 java 插件时的默认值
${project.layout.buildDirectory}/test-results

JavaToolchainSpec toolchain (只读)

获取项目范围内的工具链要求,这些要求将用于需要从工具链获取工具的任务(例如 JavaCompile)。

在此扩展上配置 toolchain 不能与 sourceCompatibility 或 targetCompatibility 同时使用。这两个值都将从 toolchain 获取。

方法详情

void disableAutoTargetJvm()

如果调用此方法,Gradle 将不会自动尝试获取与此模块目标兼容性兼容的 JVM 版本的依赖项。

当默认行为不适用时应使用此方法,特别是由于某些原因无法拆分模块,且该模块仅包含一些需要依赖更高版本的类时。

Manifest manifest()

创建一个新的 Manifest 实例。

Manifest manifest(Closure closure)

创建并配置一个新的 Manifest 实例。给定的 closure 会在返回新 manifest 实例之前对其进行配置。

Manifest manifest(Action<? super Manifest> action)

创建并配置一个新的 Manifest 实例。

void registerFeature(String name, Action<? super FeatureSpec> configureAction)

注册一个特性。

新特性将具有一个默认 capability,其对应于此项目的 "group"、"name" + 特性名称和版本。例如,如果组件的 group 是 "org",项目名称是 "lib",版本是 "1.0",特性名称是 "myFeature",则会自动添加一个名为 "org:lib-my-feature:1.0" 的 capability。

要在另一个模块中消费此特性,请添加如下依赖项

 dependencies {
     implementation(project(":lib")) {
         capabilities {
             requireCapability("org:lib-my-feature:1.0")
         }
     }
 }

FeatureSpec.capability(java.lang.String, java.lang.String, java.lang.String) 方法可用于进一步定义此特性的 capabilities。

JavaToolchainSpec toolchain(Action<? super JavaToolchainSpec> action)

为需要从工具链获取工具的任务(例如 JavaCompile)配置项目范围内的工具链要求。

在此扩展上配置 toolchain 不能与 sourceCompatibility 或 targetCompatibility 同时使用。这两个值都将从 toolchain 获取。

void withJavadocJar()

添加一个名为 javadocJar 的任务,它会将 javadoc 任务的输出打包到一个带有 classifier javadoc 的 JAR 文件中。

生成的 artifact 在 java 组件上注册为 documentation variant,并作为 assemble 任务的依赖项添加。这意味着如果同时应用了 maven-publish 或 ivy-publish,则 javadoc JAR 将会被发布。

如果项目已存在名为 javadocJar 的任务,则不会创建新任务。

Javadoc variant 的发布也可以通过 AdhocComponentWithVariants.withVariantsFromConfiguration(org.gradle.api.artifacts.Configuration, org.gradle.api.Action) 使用 ConfigurationVariantDetails.skip() 禁用,如果它应该只通过调用或连接 ':javadocJar' 任务在本地构建的话。

void withSourcesJar()

添加一个名为 sourcesJar 的任务,它会将主 SourceSet 的 Java 源码打包到一个带有 classifier sources 的 JAR 文件中。

生成的 artifact 在 java 组件上注册为 documentation variant,并作为 assemble 任务的依赖项添加。这意味着如果同时应用了 maven-publish 或 ivy-publish,则 sources JAR 将会被发布。

如果项目已存在名为 sourcesJar 的任务,则不会创建新任务。

sources variant 的发布可以使用 ConfigurationVariantDetails.skip() 通过 AdhocComponentWithVariants.withVariantsFromConfiguration(org.gradle.api.artifacts.Configuration, org.gradle.api.Action) 禁用,如果它应该只通过调用或连接 ':sourcesJar' 任务在本地构建的话。

脚本块详情

sourceSets { }

配置此项目的源码集。

执行给定的 closure 来配置 SourceSetContainer。SourceSetContainer 作为其 delegate 传递给 closure。

请看下面的示例,了解如何访问 SourceSet 'main' 以及如何配置 SourceDirectorySet 'java' 以从编译中排除某些包。

plugins {
    id 'java'
}

sourceSets {
  main {
    java {
      exclude 'some/unwanted/package/**'
    }
  }
}
委托给
来自 sourceSets 的 SourceSetContainer