Я использую SPM в своем проекте и пытаюсь интегрировать Apple/swift-openapi-generator. Мой проект разделен на несколько модулей, для чего я использую SPM. Для управления зависимостями у меня есть файл Package.swift.
// swift-tools-version:5.8
import Foundation
import PackageDescription
let openAPIRuntime = Target.Dependency.product(name: "OpenAPIRuntime", package: "swift-openapi-runtime")
let openAPIURLSession = Target.Dependency.product(name: "OpenAPIURLSession", package: "swift-openapi-urlsession")
let openAPIGenerator = Target.PluginUsage.plugin(name: "OpenAPIGenerator", package: "swift-openapi-generator")
let targets: [Target] = [
.target(
name: "OpenAPIClient",
dependencies: [openAPIRuntime, openAPIURLSession],
plugins: [openAPIGenerator]
),
//...
]
let package = Package(
name: "Modules",
platforms: [.iOS("16.0"), .macOS(.v11)],
products: targets.filter { !$0.isTest }.map { .library(name: $0.name, targets: [$0.name]) },
dependencies: [
.package(url: "https://github.com/apple/swift-openapi-generator", from: "0.1.0"),
.package(url: "https://github.com/apple/swift-openapi-runtime", from: "1.0.0"),
.package(url: "https://github.com/apple/swift-openapi-urlsession", from: "1.0.0"),
//...
],
targets: targets
)
Как показано, я добавил в этот файл продукты openAPIRuntime и openAPIURLSession, а также плагин openAPIGenerator. В результате я могу успешно построить проект.
Теперь я хочу добавить плагин openAPIGenerator в MyTarget -> Build Phases -> Run Build Tool Plug-ins, но когда я нажимаю кнопку +, я не могу найти openAPIGenerator.
Как я могу решить эту проблему?





Вероятно, вы добавили в свой основной проект другую версию пакета OpenApi, которую вы добавили в свой файл Package.swift.
Как вы написали, вы добавили "0.1.0" в свой Package.swift файл. Убедитесь, что вы добавили ту же версию в свое приложение:
Xcode по умолчанию использует это:
Если я добавлю сюда, сборка завершится с ошибкой, сообщив, что файлы конфигурации не найдены в цели. Как я могу сообщить плагину, что файлы конфигурации находятся в локальном пакете?
Вам также необходимо добавить файлы yaml в основную цель. В настоящее время невозможно установить другой путь для файлов. (посмотрите это видео около 9:15 Developer.apple.com/videos/play/wwdc2023/10171)
Нужно ли добавлять зависимость на верхнем уровне? Я бы хотел иметь его только в локальном пакете.
Нет, в этом нет необходимости, просто удалите зависимость открытого API из вашего основного приложения и добавьте, что все готово.
Я не добавил Swift-Open-Api-генератор в свой основной проект. У меня есть локальный пакет (OpenApiClient), который содержит файлы конфигурации и имеет зависимости от Swift-open-Api-генератора.