我有以下Package.swift:
// swift-tools-version:5.2
import PackageDescription
let package = Package(
name: "my-vapor-project",
platforms: [
.macOS(.v10_15)
],
dependencies: [
// 💧 A server-side Swift web framework.
.package(url: "https://github.com/vapor/vapor.git", from: "4.0.0-rc"),
.package(url: "https://github.com/vapor/fluent.git", from: "4.0.0-rc"),
.package(url: "https://github.com/vapor/fluent-mysql-driver.git", from: "4.0.0-rc"),
.package(url: "https://github.com/apple/swift-package-manager", .branch("master")),
],
targets: [
.target(name: "App", dependencies: [
.product(name: "Fluent", package: "fluent"),
.product(name: "FluentMySQLDriver", package: "fluent-mysql-driver"),
.product(name: "Vapor", package: "vapor"),
.product(name: "SwiftPM", package: "swift-package-manager")
]),
.target(name: "Run", dependencies: ["App"]),
.testTarget(name: "AppTests", dependencies: [
.target(name: "App"),
.product(name: "XCTVapor", package: "vapor"),
])
]
)
当我保存文件时,Xcode尝试自动解决依赖关系,并且出现以下错误和警告:
显示所有消息/Users/sluther/Projects/my-vapor-project/Package.swift:软件包“ swift-package-manager”中的产品依赖性“ SwiftPM”找到
:任何目标都未使用依赖项'SwiftPM'
事实证明,在编写本文时,使用Swift Tools版本5.2删除了用于定义产品依赖项的旧语法时,不能将Swift Package Manager作为依赖项包括在内。将Swift Tools版本切换到5.1可解决此问题。
// swift-tools-version:5.1
import PackageDescription
let package = Package(
name: "my-vapor-project",
platforms: [
.macOS(.v10_15)
],
dependencies: [
// 💧 A server-side Swift web framework.
.package(url: "https://github.com/vapor/vapor.git", from: "4.0.0-rc"),
.package(url: "https://github.com/vapor/fluent.git", from: "4.0.0-rc"),
.package(url: "https://github.com/vapor/fluent-mysql-driver.git", from: "4.0.0-rc"),
.package(url: "https://github.com/apple/swift-package-manager", .branch("master")),
],
targets: [
.target(name: "App", dependencies: [
.product(name: "Fluent", package: "fluent"),
.product(name: "FluentMySQLDriver", package: "fluent-mysql-driver"),
.product(name: "Vapor", package: "vapor"),
"SwiftPM"
]),
.target(name: "Run", dependencies: ["App"]),
.testTarget(name: "AppTests", dependencies: [
.target(name: "App"),
.product(name: "XCTVapor", package: "vapor"),
])
]
)