本文档解释了 Kotlin Gradle 插件(KGP)的架构,描述了它如何与 Gradle 的构建系统集成,其主要组件以及它们如何交互。本页侧重于插件本身的内部架构,而不是如何使用它。有关 Kotlin 编译过程的信息,请参阅编译器架构。
Kotlin Gradle 插件在 Kotlin 和 Gradle 之间提供了无缝集成,能够在 Gradle 构建系统内为各种目标平台(JVM、JS、Native)编译 Kotlin 代码。插件架构围绕 Gradle 的插件系统构建,通过扩展、任务和配置遵循 Gradle 的模式。
来源
Kotlin Gradle 插件由几个实现 Gradle 插件接口的插件组成,每个插件都附有相应的扩展,以提供用于配置的 DSL 功能。
来源
该插件使用复杂的属性系统来配置其行为。该系统封装在PropertiesProvider类中,该类提供对 Gradle 属性的类型安全访问。
属性系统管理设置
来源
Kotlin Gradle 插件定义了各种任务类型,用于与 Kotlin 编译和处理相关的不同操作。这些任务与 Gradle 的任务执行模型集成。
主要任务类型包括
KotlinJvmCompile:编译 JVM 的 Kotlin 代码KotlinJsCompile:编译 JavaScript 的 Kotlin 代码KotlinNativeCompile:编译原生平台的 Kotlin 代码KotlinNativeLink:链接原生库和可执行文件来源
任务的配置和执行遵循 Gradle 的生命周期
原生目标使用“副作用”模式来配置二进制文件
来源
该插件包含一个强大的诊断系统,用于向用户报告错误、警告和其他消息。
诊断系统负责
来源
Kotlin Gradle 插件通过专门的架构为原生平台提供特殊支持
对于 Apple 平台,该插件提供了框架生成和 Swift 导出等附加功能
来源
该插件实现了 Gradle 的配置缓存功能,该功能允许 Gradle 在构建之间重用配置阶段的结果
该插件还为不同的 Gradle 版本提供兼容性支持
来源
该插件包含一个构建报告系统,用于提供构建性能和指标的见解。
来源
Kotlin Gradle 插件为其他插件和工具提供了各种集成点。
来源
Kotlin Gradle 插件架构遵循模块化设计,并与 Gradle 的构建系统集成。它包括:
这种架构使插件能够在利用 Gradle 强大构建系统的同时,为跨多个平台构建 Kotlin 项目提供无缝体验。
来源