Swift 应用程序插件提供了构建 Swift 应用程序的任务、配置和约定。
用法
plugins {
`swift-application`
}
plugins {
id 'swift-application'
}
构建变体
Swift 应用程序插件理解以下维度。更多信息请阅读构建变体介绍。
- 构建类型 - 总是 debug 或 release
-
构建类型控制生成二进制文件的可调试性以及优化。
-
debug- 生成调试符号且不优化二进制文件 -
release- 生成调试符号并优化,但从二进制文件中提取调试符号
-
- 目标机器 - 默认为构建主机
-
目标机器表示应用程序期望运行的机器。目标机器由其操作系统和架构标识。Gradle 根据主机上的可用性选择工具链。
目标机器可以按如下方式配置
application {
targetMachines = listOf(machines.linux.x86_64, machines.macOS.x86_64)
}
application {
targetMachines = [
machines.linux.x86_64, machines.macOS.x86_64
]
}
任务
下图显示了此插件添加的任务之间的关系。
依赖变体的任务
Swift 应用程序插件根据应用程序组件的变体创建任务。更多信息请阅读构建变体介绍。下图显示了依赖变体的任务之间的关系。
compileVariantSwift(例如compileDebugSwift和compileReleaseSwift)- SwiftCompile-
依赖于:所有为编译提供源文件的任务:: 使用选定的编译器编译 Swift 源文件。
linkVariant(例如linkDebug和linkRelease)- LinkExecutable-
依赖于:所有有助于链接可执行文件的任务,包括通过项目依赖项解析的项目中的
linkVariant和createVariant任务:: 使用选定的链接器从已编译的目标文件链接可执行文件。 installVariant(例如installDebug和installRelease)- InstallExecutable-
依赖于:
linkVariant以及所有有助于可执行文件运行时的任务,包括通过项目依赖项解析的项目中的linkVariant任务:: 安装可执行文件及其所有运行时依赖项,以便于执行。 assembleVariant(例如assembleDebug和assembleRelease)- 任务(生命周期)-
依赖于:
linkVariant:: 聚合组装此应用程序特定变体的任务。
生命周期任务
Swift 应用程序插件将其一些任务附加到 Base 插件章节中记录的标准生命周期任务——Swift 应用程序插件会自动应用该插件。
assemble- 任务(生命周期)-
依赖于:
linkDebug:: 在项目中组装当前主机(如果存在)的应用程序调试变体的聚合任务。此任务由 Base 插件添加。 check- 任务(生命周期)-
执行验证任务的聚合任务,例如运行测试。一些插件将自己的验证任务添加到
check。例如,XCTest 插件将任务附加到此生命周期任务以运行测试。此任务由 Base 插件添加。 build- 任务(生命周期)-
依赖于:
check,assemble:: 执行项目完整构建的聚合任务。此任务由 Base 插件添加。 clean- 删除-
删除构建目录及其中的所有内容,即
layout.buildDirectory项目属性指定的路径。此任务由 Base 插件添加。
依赖管理
与 Swift 应用程序插件创建的任务一样,根据应用程序组件的变体创建了多个配置。更多信息请阅读构建变体介绍。下图描述了 Swift 应用程序插件添加的配置
-
白色配置是用户应该用来声明依赖项的配置
-
粉色配置,也称为可消费配置,用 (C) 表示,是组件针对库运行时使用的配置
-
蓝色配置,也称为可解析配置,用 (R) 表示,是组件内部使用的配置
以下配置用于声明依赖项
implementation-
用于声明主组件所有变体的实现依赖项。您应该在此处声明任何变体的依赖项。
mainVariantImplementation(例如mainDebugImplementation和mainReleaseImplementation)扩展implementation-
用于声明主组件特定变体的实现依赖项。您应该在此处声明特定变体的依赖项。
以下配置由依赖于应用程序组件的下游消费者使用
variantRuntimeElements(例如debugRuntimeElements和releaseRuntimeElements)扩展mainVariantImplementation-
用于执行应用程序。此配置旨在供消费者使用,以检索运行应用程序所需的所有元素。
以下配置由应用程序本身使用
swiftCompileVariant(例如swiftCompileDebug和swiftCompileRelease)扩展mainVariantImplementation-
用于编译应用程序。此配置包含应用程序的编译包含根,因此在调用 Swift 编译器编译应用程序时使用。
nativeLinkVariant(例如nativeLinkDebug和nativeLinkRelease)扩展mainVariantImplementation-
用于链接应用程序。此配置包含应用程序的库,因此在调用 Swift 链接器链接应用程序时使用。
nativeRuntimeVariant(例如nativeRuntimeDebug和nativeRuntimeRelease)扩展mainVariantImplementation-
用于执行应用程序。此配置包含应用程序的运行时库。
约定
Swift 应用程序插件为源和任务添加了约定,如下所示。
项目布局
Swift 应用程序插件假定以下项目布局。这些目录都不需要存在或包含任何内容。Swift 应用程序插件将编译它找到的任何内容,并忽略任何缺失的内容。
src/main/swift-
带有
.swift扩展名的 Swift 源
您可以通过配置 application 脚本块上的 source 来配置项目布局。
compileVariantSwift 任务
Swift 应用程序插件为要构建的应用程序组件的每个变体添加一个 SwiftCompile 实例(例如 compileDebugSwift 和 compileReleaseSwift)。更多信息请阅读构建变体介绍。以下是一些最常见的配置选项。
| compilerArgs |
[] |
| debuggable |
|
| modules |
|
| macros |
[] |
| objectFileDir |
|
| optimized |
调试构建类型为 |
| source |
|
| targetPlatform |
从二进制文件的 |
| toolChain |
linkVariant 任务
Swift 应用程序插件为应用程序的每个变体添加一个 LinkExecutable 实例——例如 linkDebug 和 linkRelease。更多信息请阅读构建变体介绍。以下是一些最常见的配置选项。
| debuggable |
|
| libs |
|
| linkedFile |
|
| linkerArgs |
[] |
| source |
|
| targetPlatform |
从二进制文件的 |
| toolChain |
installVariant 任务
Swift 应用程序插件为测试组件的每个变体添加一个 InstallExecutable 实例——例如 installDebug 和 installRelease。更多信息请阅读构建变体介绍。无需配置任务上的任何属性。