ios - Swift 包管理器 - 排除依赖
问题描述
我正在重新考虑在 SPM 中使用多种产品。事情就是这样。
我将在包装中提供两种产品。一个是“工具”,另一个是“工具网络”。第一个有一些 swift 类,没什么特别的,完全没有依赖关系。第二个也有一些快速的逻辑,但依赖于 Alamofire 库。
这是配置:
// swift-tools-version:5.1
import PackageDescription
let package = Package(
name: "Tool",
platforms: [.iOS(.v11)],
products: [
.library(name: “Tool", targets: [“Tool"]),
.library(name: “ToolNetworking", targets: [“ToolNetworking"])
],
dependencies: [
.package(url: "https://github.com/Alamofire/Alamofire.git", .exact("5.1.0"))
],
targets: [
.target(
name: "Tool",
path: "Sources",
exclude: ["Networking"]
),
.target(
name: "ToolNetworking",
dependencies: ["Tool", "Alamofire"],
path: "Sources",
sources: ["Networking"]
)
],
swiftLanguageVersions: [.v5]
)
当我想安装软件包时,我可以在两者之间进行选择。如果我选择ToolNetworking
,它也会安装Alamofire
依赖项。
对于Tool
产品,我只希望 SPM 安装我的代码,没有依赖项。这是我的问题。由于我没有定义字段,所以我Alamofire
只安装产品时如何排除?Tool
dependencies
谢谢
解决方案
第一步是升级到 Swift 5.2。Swift 5.2 附带的 Swift 包管理器开始实现这种行为(如SE-0226中所述)。
然而,由于它还没有完全实现,Xcode 可能仍然会检查 Alamofire。但是,它最终不应该链接它。因此,如果您只使用该Tool
产品,则生成的二进制文件中不会有任何 Alamofire 痕迹 :-)
推荐阅读
- css - 如何将具有高度:0px 的元素 html 设置为高度:自动(CSS)
- sql - 将 NEWID() 传递给存储过程
- visual-studio - 如何在 TFS 中启用分析
- azure - 如何在 Spring Boot 中为 CosmosDb 设置分区键
- google-apps-script - 谷歌电子表格脚本-while循环中的getCurrentCell()只能工作一次?
- javascript - 过滤掉粘贴上的空行?
- excel - 计算一个数字的实例,但仅在跟随另一个重复的实例时。0,0,0,0,1
- javascript - 图像的视差效果
- javascript - Extjs 6.6 过滤器树形面板
- rcpp - Rcpp 属性是否支持仅非标头的 Rcpp 模块库?