Я использую 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-генератора.