Swift 包管理器无法解决依赖问题。

5
我目前正在尝试在Perfect Server Side Swift项目中使用Swift Package Manager,但是当我运行Swift package update时,它永远无法解决。使用详细标志,它似乎一遍又一遍地循环相同的依赖项。
我认为问题的起源是我正在尝试创建一个自定义包以导入到我的项目中。我尝试以一种可以将其导入到其他项目中的方式构建包。问题是,我的包本身依赖于完美依赖项之一。如果我从整个项目包中删除我的自定义包,则依赖项会成功下载。因此,我只能假设是我的包出了问题。
我的包的依赖关系如下:
let package = Package(
    name: "TestPackage",
    products: [
        // Products define the executables and libraries produced by a package, and make them visible to other packages.
        .library(
            name: "TestPackage",
            targets: ["TestPackage"]),
    ],
    dependencies: [
        // Dependencies declare other packages that this package depends on.
        // .package(url: /* package url */, from: "1.0.0"),
    .Package(url: "https://github.com/PerfectlySoft/Perfect-HTTP.git", majorVersion: 3),
    ],
    targets: [
        // Targets are the basic building blocks of a package. A target can define a module or a test suite.
        // Targets can depend on other targets in this package, and on products in packages which this package depends on.
        .target(
            name: "TestPackage",
            dependencies: ["PerfectHTTP"]),
        .testTarget(
            name: "TestPackageTests",
            dependencies: ["TestPackage"]),
    ]
)

然后我的主项目的package.swift文件如下所示

let package = Package(
    name: "json_api",
    targets: [],
    dependencies: [
        .Package(url: "https://github.com/PerfectlySoft/Perfect-HTTPServer.git", majorVersion: 3),
        .Package(url:"/local/path/to/TestPackage", majorVersion:0, minor:1),
    ]
)

正如您所看到的,它们都导入了Perfect-HTTP包(Perfect-HTTP-Server通过.package(url: "https://github.com/PerfectlySoft/Perfect-HTTP.git", from: "3.0.0"),实现)
当它挂起时,它一直在获取Perfect-COpenSSLPerfect-Thread而不是Perfect-HTTP
我对SPM相当陌生,这是我第一次尝试创建自己的软件包。 我该如何解决我只能假设是某种循环依赖问题?
1个回答

6

我成功解决了这个问题,认为这可能对他人有用。

我在git中将我的版本标签设置为“v0.1”,但实际上我需要给它完整的语义化版本号,例如0.1.0,这样标签就成功了。


2
你是如何进行版本控制的?能否展示一下完整的Package.swift文件? - Krešimir Prcela
我想强调一下“我应该如何解决我只能假设是某种循环依赖问题的情况?”。我偶尔会遇到这种问题,但没有好的工具来解决它。似乎SPM应该提供更多帮助。 - Chris Prince
我刚刚修复了我最近自己遇到的这个问题。这也发生在服务器端的Swift开发环境中。在我的情况下,我正在使用Swift 5.0.1,并遇到了这些SPM解析问题。更新到Swift 5.2.3后,问题就消失了。我假设相对较新的更改改进了SPM如何解析依赖关系。感谢Swift人员! :) - Chris Prince

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