JavaPluginExtension
API 文档 | 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