Swift 包管理器 - 排除依赖
Swift Package Manager - Exclude dependency
我正在重新考虑在 SPM 中使用多个产品。事情是这样的。
我会在包装中提供两种产品。一个是“工具”,另一个是“工具网络”。
第一个有一些 swift 类,没什么特别的,完全没有依赖关系。
第二个也有一些 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]
)
当我要安装软件包时,我可以在两者之间进行选择。如果我 select ToolNetworking
,它也会安装 Alamofire
依赖。
对于 Tool
产品,我只希望 SPM 安装我的代码,没有依赖项。这是我的问题。如果我只安装 Tool
产品,因为我没有定义 dependencies
字段,如何排除 Alamofire
?
谢谢
第一步是升级到 Swift 5.2。 Swift 随 Swift 5.2 一起提供的包管理器开始执行此行为(如 SE-0226 中所述)。
但是,由于尚未完全实施,Xcode 可能仍会查看 Alamofire。不过,它最终不应该 link 它。因此,如果您只使用 Tool
产品,生成的二进制文件中不会有任何 Alamofire 的痕迹:-)
我正在重新考虑在 SPM 中使用多个产品。事情是这样的。
我会在包装中提供两种产品。一个是“工具”,另一个是“工具网络”。 第一个有一些 swift 类,没什么特别的,完全没有依赖关系。 第二个也有一些 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]
)
当我要安装软件包时,我可以在两者之间进行选择。如果我 select ToolNetworking
,它也会安装 Alamofire
依赖。
对于 Tool
产品,我只希望 SPM 安装我的代码,没有依赖项。这是我的问题。如果我只安装 Tool
产品,因为我没有定义 dependencies
字段,如何排除 Alamofire
?
谢谢
第一步是升级到 Swift 5.2。 Swift 随 Swift 5.2 一起提供的包管理器开始执行此行为(如 SE-0226 中所述)。
但是,由于尚未完全实施,Xcode 可能仍会查看 Alamofire。不过,它最终不应该 link 它。因此,如果您只使用 Tool
产品,生成的二进制文件中不会有任何 Alamofire 的痕迹:-)