Swift Application 插件为构建 Swift 应用程序提供了 task、配置和约定。
用法
plugins {
`swift-application`
}
plugins {
id 'swift-application'
}
构建变体
Swift Application 插件理解以下维度。阅读构建变体介绍以获取更多信息。
- 构建类型 - 始终为 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
]
}
Task
下图显示了此插件添加的 task 之间的关系。

变体相关的 Task
Swift Application 插件根据应用程序组件的变体创建 task。阅读构建变体介绍以获取更多信息。下图显示了变体相关的 task 之间的关系。

compileVariantSwift
(例如compileDebugSwift
和compileReleaseSwift
) - SwiftCompile-
依赖于:所有为编译贡献源文件的 task :: 使用选定的编译器编译 Swift 源文件。
linkVariant
(例如linkDebug
和linkRelease
) - LinkExecutable-
依赖于:所有为链接可执行文件做出贡献的 task,包括来自通过项目依赖关系解析的项目的
linkVariant
和createVariant
task :: 使用选定的链接器从编译的对象文件链接可执行文件。 installVariant
(例如installDebug
和installRelease
) - InstallExecutable-
依赖于:
linkVariant
和所有为可执行文件的运行时做出贡献的 task,包括来自通过项目依赖关系解析的项目的linkVariant
task :: 安装可执行文件及其所有运行时依赖项以便于执行。 assembleVariant
(例如assembleDebug
和assembleRelease
) - Task (生命周期)-
依赖于:
linkVariant
:: 聚合组装此应用程序特定变体的 task。
生命周期 Task
Swift Application 插件将其某些 task 附加到 Base Plugin 章节 中记录的标准生命周期 task — Swift Application 插件会自动应用 Base Plugin
assemble
- Task (生命周期)-
依赖于:
linkDebug
:: 聚合 task,用于组装项目中当前主机(如果存在)的应用程序的 debug 变体。此 task 由 Base Plugin 添加。 check
- Task (生命周期)-
聚合 task,用于执行验证 task,例如运行测试。某些插件将它们自己的验证 task 添加到
check
。例如,XCTest 插件将一个 task 附加到此生命周期 task 以运行测试。此 task 由 Base Plugin 添加。 build
- Task (生命周期)-
依赖于:
check
,assemble
:: 聚合 task,用于执行项目的完整构建。此 task 由 Base Plugin 添加。 clean
- 删除-
删除构建目录及其中的所有内容,即
layout.buildDirectory
项目属性指定的路径。此 task 由 Base Plugin 添加。
依赖管理
就像 Swift Application 插件创建的 task 一样,多个配置是基于应用程序组件的变体创建的。阅读构建变体介绍以获取更多信息。下图描述了 Swift Application 插件添加的配置

-
白色配置是用户应该用来声明依赖项的配置
-
粉色配置,也称为可消费配置,用 (C) 表示,是在组件针对库运行时使用的配置
-
蓝色配置,也称为可解析配置,用 (R) 表示,是组件内部使用的配置
以下配置用于声明依赖项
implementation
-
用于为主要组件的所有变体声明实现依赖项。您应该在此处声明任何变体的依赖项。
mainVariantImplementation
(例如mainDebugImplementation
和mainReleaseImplementation
) 扩展了implementation
-
用于为主要组件的特定变体声明实现依赖项。您应该在此处声明特定变体的依赖项。
以下配置供依赖于应用程序组件的下游消费者使用
variantRuntimeElements
(例如debugRuntimeElements
和releaseRuntimeElements) 扩展了 `mainVariantImplementation
-
用于执行应用程序。此配置旨在供消费者使用,以检索运行应用程序所需的所有元素。
以下配置供应用程序自身使用
swiftCompileVariant
(例如swiftCompileDebug
和swiftCompileRelease
) 扩展了mainVariantImplementation
-
用于编译应用程序。此配置包含应用程序的编译 include 根目录,因此在调用 Swift 编译器编译应用程序时使用。
nativeLinkVariant
(例如nativeLinkDebug
和nativeLinkRelease
) 扩展了mainVariantImplementation
-
用于链接应用程序。此配置包含应用程序的库,因此在调用 Swift 链接器链接应用程序时使用。
nativeRuntimeVariant
(例如nativeRuntimeDebug
和nativeRuntimeRelease
) 扩展了mainVariantImplementation
-
用于执行应用程序。此配置包含应用程序的运行时库。
约定
Swift Application 插件为源和 task 添加了约定,如下所示。
项目布局
Swift Application 插件假定如下所示的项目布局。这些目录都不需要存在或包含任何内容。Swift Application 插件将编译找到的任何内容,并忽略任何缺失的内容。
src/main/swift
-
Swift 源代码,扩展名为
.swift
您可以通过配置 application
脚本块上的 source
来配置项目布局。
compileVariantSwift
Task
Swift Application 插件为要构建的应用程序组件的每个变体添加一个 SwiftCompile 实例(例如 compileDebugSwift
和 compileReleaseSwift
)。阅读构建变体介绍以获取更多信息。下面显示了一些最常见的配置选项。
compilerArgs |
[] |
debuggable |
|
modules |
|
macros |
[] |
objectFileDir |
|
optimized |
debug 构建类型为 |
source |
|
targetPlatform |
派生自二进制文件的 |
toolChain |
linkVariant
Task
Swift Application 插件为应用程序的每个变体添加一个 LinkExecutable 实例 - 例如 linkDebug
和 linkRelease
。阅读构建变体介绍以获取更多信息。下面显示了一些最常见的配置选项。
debuggable |
|
libs |
|
linkedFile |
|
linkerArgs |
[] |
source |
|
targetPlatform |
派生自二进制文件的 |
toolChain |
installVariant
Task
Swift Application 插件为测试组件的每个变体添加一个 InstallExecutable 实例 - 例如 installDebug
和 installRelease
。阅读构建变体介绍以获取更多信息。无需在 task 上配置任何属性。