Swift 包管理器 - 解决包版本终端命令
Posted
技术标签:
【中文标题】Swift 包管理器 - 解决包版本终端命令【英文标题】:Swift Package Manager - Resolve Package Versions terminal command 【发布时间】:2019-11-14 07:56:28 【问题描述】:我想用 SPM 替换 cocoapods。我决定一次去一个图书馆。我从 cocoapods 中删除了 swinject 库并通过File->Swift Packages->Add Package Dependency
添加它
这很成功,项目按预期构建和运行。
然后我请团队中的其他人检查分支,看看他们是否可以毫无问题地构建项目。然后我们遇到了错误“缺少包装产品'Swinject'”。我们通过在 Xcode 中执行 File->Swift Packages->Resolve Package Versions
解决了这个错误。
我也需要在构建服务器上运行它。我尝试在终端应用程序中输入swift package --help
以查看可用的命令。 resolve
命令看起来很有希望,所以我尝试了但无济于事。 (错误:找不到根清单)
那么,我的问题是,是否有与File->Swift Packages->Resolve Package Versions
相同的终端命令?
注意:当我通过 SPM 添加第 3 方库时,它为我创建了一个文件:Proj.xcworkspace/xcshareddata/swiftpm/Package.resolved
。它还对Proj.xcodeproj/project.pbxproj
文件进行了各种更改。没有创建 package.swift
文件。
更新:
我得到的最接近答案的是我应该尝试xcodebuild -resolvePackageDependencies
,不幸的是该命令与File->Swift Packages->Resolve Package Versions
的作用不同。
【问题讨论】:
如果有人路过但他们的 CI 仍然存在问题,您还可以检查您是否忽略了位于.swiftpm/xcode/
文件夹中的方案
【参考方案1】:
我在项目中遇到了 SPM 问题。看来你需要通过-clonedSourcePackagesDirPath [directory]
xcodebuild -resolvePackageDependencies -workspace ck550.xcworkspace -scheme ck550-cli -clonedSourcePackagesDirPath .
xcodebuild -workspace ck550.xcworkspace -scheme ck550-cli -clonedSourcePackagesDirPath .
第一个命令将所有 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
【讨论】:
谢谢!这适用于 Azure Pipeline。我的项目只包含来自 Github 的 SPM 和开源 (Vapor) 包!【参考方案2】:据我所知,有 2 个 Package.resolved 文件。一个在工作区,一个在项目上。由于某种原因,工作区有旧版本的包并正在运行
xcodebuild -resolvePackageDependencies -workspace myworkspace.xcworkspace -scheme my scheme
不起作用。但是,解决项目(因为项目的 Package.resolved 具有正确的包版本信息)确实有效
xcodebuild -resolvePackageDependencies -project myproject.xcodeproj -scheme my scheme
【讨论】:
很棒的帮助 - 我完全被 Xcode 13.2.1 无法解析软件包所困扰(不要让我开始了解 Apple 质量......)以上是关于Swift 包管理器 - 解决包版本终端命令的主要内容,如果未能解决你的问题,请参考以下文章