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

时间:2019-11-14 07:56:28

标签: xcode swift-package-manager

我想用SPM代替椰壳类。我决定一次去一个图书馆。我从cocoapods中删除了swinject库,并通过File->Swift Packages->Add Package Dependency

添加了它

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

enter image description here

然后,我要求团队中的其他人签出分支机构,看看他们是否可以毫无问题地在自己身边建立项目。然后,我们遇到错误“缺少包装产品'Swinject'”。我们通过在Xcode中执行File->Swift Packages->Resolve Package Versions解决了该错误。

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

那么,我的问题是,是否存在与File->Swift Packages->Resolve Package Versions相同的终端命令?

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

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

2 个答案:

答案 0 :(得分:0)

在我的项目中,我正在为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

答案 1 :(得分:0)

从我所看到的来看,有2个Package.resolved文件。一个在工作区上,另一个在项目上。由于某些原因,工作区中有旧版本的软件包并且正在运行

xcodebuild -resolvePackageDependencies -workspace myworkspace.xcworkspace -scheme my scheme

不起作用。但是,对项目进行解析(因为项目的Package.resolved具有正确的软件包版本信息)可以正常工作

xcodebuild -resolvePackageDependencies -project myproject.xcodeproj -scheme my scheme