在Xcode 13.3和Swift 5.6中,SPM依赖分支已被弃用。

11

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"])
    ]
)

此警告显示:

'package(name:url:_:)'被废弃:请使用特定的需求API(例如使用'branch:'而不是'.branch')。

然而,应用建议的更新使得依赖关系从MyPackage不可达到。

1个回答

19

需要将依赖项设置为产品

具体而言,使用.product(name: [包名称], package: [仓库名称]),示例:

// 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")])
    ]
)

更新

如果您有一个包含多个产品/库的软件包,这仍然适用于 Xcode 14.3.1


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接