SwiftPM 在处理本地包时发出有关依赖冲突的警告

Kev*_*ers 14 swift swift-package-manager

我是 Swift 包Saga的作者和维护者,它附带了一个示例应用程序。最近,我在 Xcode 中收到两个关于依赖项设置方式的警告,我不知道如何解决这个问题。警告:

'sagaswimrenderer' dependency on 'https://github.com/loopwerk/Saga.git' conflicts with dependency on '/Users/kevin/Workspace/Saga/Saga' which has the same identity 'saga'. this will be escalated to an error in future versions of SwiftPM.

'sagaparsleymarkdownreader' dependency on 'https://github.com/loopwerk/Saga.git' conflicts with dependency on '/Users/kevin/Workspace/Saga/Saga' which has the same identity 'saga'. this will be escalated to an error in future versions of SwiftPM.

这是Package.swift示例应用程序的文件:

// swift-tools-version:5.5

import PackageDescription

let package = Package(
  name: "Example",
  platforms: [
    .macOS(.v12)
  ],
  dependencies: [
    .package(path: "../"),
    .package(url: "https://github.com/loopwerk/SagaParsleyMarkdownReader", from: "0.5.0"),
    .package(url: "https://github.com/loopwerk/SagaSwimRenderer", from: "0.6.1"),
  ],
  targets: [
    .executableTarget(
      name: "Example",
      dependencies: [
        "Saga",
        "SagaParsleyMarkdownReader",
        "SagaSwimRenderer"
      ]
    ),
  ]
)
Run Code Online (Sandbox Code Playgroud)

因此,这取决于 Saga 的本地版本,以及 SagaParsleyMarkdownReader 和 SagaSwimRenderer 的实际发布版本。但这两个包也依赖于 Saga,这就是导致警告的原因。

我不知道如何设置示例应用程序,所以我不会收到这些警告。我可以依赖 Saga 的发布版本,但这使得本地开发变得更加困难(我使用示例应用程序来处理 Saga 中的功能和错误修复)。SagaParsleyMarkdownReader 和 SagaSwimRenderer 只需依赖 Saga,因为它们使用 Saga 中定义的代码。

这曾经在没有警告的情况下工作,并且继续正常工作,但由于警告表明这将成为 SwiftPM 未来版本中的错误,我需要找到解决方案。