Swift 包管理器 - 解决包版本终端命令

Clo*_*ife 11 xcode swift-package-manager

我想用 SPM 替换 cocoapods。我决定一次去一个图书馆。我从 cocoapods 中删除了 swinject 库并通过添加它File->Swift Packages->Add Package Dependency

这是成功的,项目按预期构建和运行。

在此处输入图片说明

然后我让我团队中的其他人检查分支,看看他们是否可以在没有问题的情况下构建项目。然后我们遇到了错误“缺少包产品‘Swinject’”。我们通过File->Swift Packages->Resolve Package Versions在 Xcode 中执行解决了这个错误。

我也需要让它在构建服务器上工作。我尝试在swift package --help终端应用程序中输入以查看可用的命令。该resolve命令看起来很有希望,所以我尝试了无济于事。(错误:未找到根清单)

那么,我的问题是,是否有一个终端命令与File->Swift Packages->Resolve Package Versions?

注意:当我通过 SPM 添加 3rd 方库时,它为我创建了一个文件:Proj.xcworkspace/xcshareddata/swiftpm/Package.resolved. 它还对Proj.xcodeproj/project.pbxproj文件进行了各种更改。没有package.swift创建文件。

更新:我最接近答案的是我应该尝试xcodebuild -resolvePackageDependencies,不幸的是该命令与File->Swift Packages->Resolve Package Versions.

voo*_*dlo 11

我在我的项目中为 SPM 苦苦挣扎。看来你需要通过-clonedSourcePackagesDirPath [directory]

xcodebuild -resolvePackageDependencies -workspace ck550.xcworkspace -scheme ck550-cli -clonedSourcePackagesDirPath .

xcodebuild -workspace ck550.xcworkspace -scheme ck550-cli -clonedSourcePackagesDirPath .
Run Code Online (Sandbox Code Playgroud)

第一个命令将所有 Swift 包解析并下载到./checkouts 中,并且还创建了其他一些./[dirs]

第二个命令启动应用程序的构建,并且还会构建那些 SPM 包。

这是构建服务器的输出:https : //travis-ci.org/vookimedlo/ck550-macos/builds/626438212

Travis-CI 配置:https : //github.com/vookimedlo/ck550-macos/blob/master/.travis.yml


Gia*_*Pac 8

据我所知,有 2 个 Package.resolved 文件。一份关于工作区,一份关于项目。由于某种原因,工作区具有旧版本的软件包并正在运行

xcodebuild -resolvePackageDependencies -workspace myworkspace.xcworkspace -scheme my scheme
Run Code Online (Sandbox Code Playgroud)

不起作用。但是,解析项目(因为项目的 Package.resolved 具有正确的包版本信息)确实有效

xcodebuild -resolvePackageDependencies -project myproject.xcodeproj -scheme my scheme
Run Code Online (Sandbox Code Playgroud)

  • 非常棒的帮助 - 我完全被 Xcode 13.2.1 困住了,无法解析软件包(别让我开始谈论 Apple 质量......) (2认同)