SPM 依赖项分支在 Xcode 13.3 和 Swift 5.6 上已弃用

vau*_*all 12 xcode ios swift swift-package-manager xcode13

Xcode 13.3显示关于弃用外部包依赖项的警告。

例如:

// swift-tools-version:5.6
import PackageDescription

let package = Package(
    name: "MyPackage",
    platforms: [
        .iOS(.v15)
    ],
    products: [
        .library(
            name: "MyPackage",
            targets: ["MyTarget"]),
    ],
    dependencies: [
        .package(
            name: "MyDependency", 
            url: "https://github.com/someorg/somepackage.git",
            .branch("main"))
    ],
    targets: [
        .target(
            name: "MyTarget",
            dependencies: ["MyDependency"])
    ]
)
Run Code Online (Sandbox Code Playgroud)

这显示了警告:

'package(name:url:_:)' 已弃用:使用特定要求的 API 代替(例如,使用 'branch:' 代替 '.branch')

但是,应用建议的更新会使依赖项无法再从MyPackage.

vau*_*all 22

有必要将依赖项设置为产品

具体来说.product(name: [PackageName], package: [Name of repository]),例如:

// swift-tools-version:5.6
import PackageDescription

let package = Package(
    name: "MyPackage",
    platforms: [
        .iOS(.v15)
    ],
    products: [
        .library(
            name: "MyPackage",
            targets: ["MyTarget"]),
    ],
    dependencies: [
        .package(
            url: "https://github.com/someorg/somepackage.git",
            branch: "main")
    ],
    targets: [
        .target(
            name: "MyTarget",
            dependencies: [
                .product(
                    name: "MyDependency", 
                    package: "somepackage")])
    ]
)
Run Code Online (Sandbox Code Playgroud)

更新

Xcode 14.3.1如果您有一个包含多个产品/库的包,这仍然相关。