【问题标题】:Multiple targets in Vapor Xcode projectVapor Xcode 项目中的多个目标
【发布时间】:2017-05-03 11:21:28
【问题描述】:

我正在 Xcode 中使用 Vapor,部署到 Heroku。 我的网络应用程序运行良好。对 Vapor 以及部署到 Heroku 的简单程度感到非常满意。

我现在正尝试在同一个项目中创建一个单独的 Heroku Worker 进程。我已将新工作人员添加到我的 Heroku Procfile 中,但我不清楚我应该如何在 Xcode 项目中设置第二个目标,以便每次运行 vapor xcode 重建项目文件时它不会被覆盖。

我的 Procfile 看起来像这样:

web: App --env=production --workdir=./ --config:servers.default.port=$PORT --config:postgresql.url=$DATABASE_URL
worker: Worker --env=production --workdir=./ --config:servers.default.port=$PORT --config:postgresql.url=$DATABASE_URL

所以,如您所见,我只想要一个名为 Worker 的应用程序可执行文件,我可以在 Heroku 工作人员测功机中启动它。

知道如何在我的 Xcode 项目中拥有一个不会被vapor xcode 覆盖的网络应用目标和单独的工作目标吗?

谢谢 --TJ

【问题讨论】:

    标签: swift heroku targets vapor


    【解决方案1】:

    啊哈!解决了。为了在项目中有多个目标,您需要在 Package.swift 文件中为负责构建项目文件的 Swift 包管理器定义它们。

    所以,我的 Package.swift 现在看起来像这样:

    import PackageDescription
    
    let package = Package(
        name: "myapp",
        targets: [
            Target(name: "App", dependencies: ["Shared"]),
            Target(name: "Worker", dependencies: ["Shared"]),
        ],
        dependencies: [
        ],
        exclude: [
            "Config",
            "Database",
            "Localization",
            "Public",
            "Resources",
            ]
    )
    

    我的 Sources 目录结构现在如下所示:

    Sources | - App - Worker - Shared

    共享目标包含应用程序和 Worker 可执行目标所需的所有共享代码。

    现在,如上所述定义 Procfile 可以完美运行。我现在有一个 Web 应用程序和一个工作进程。

    干杯 --TJ

    【讨论】:

    • 我正在使用 Vapor 3 / Swift 4.1.2 / XCode 9.4.1 尝试这个解决方案,但没有任何运气。有什么建议可以在最新版本中使用吗?错误之一:“找不到目标:工人;使用 Swift 4 清单中的 'path' 属性设置自定义目标路径”,但添加路径似乎无法解决问题。感谢您的任何建议。
    • 我们现在仍然停留在蒸汽 2.0 中……希望我们很快就会迁移。抱歉,我还帮不上忙。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-26
    • 2016-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-20
    • 1970-01-01
    相关资源
    最近更新 更多