Vapor Xcode项目中的多个目标

时间:2017-05-03 11:21:29

标签: swift heroku targets vapor

我在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工作人员dyno中启动。

我知道如何在我的Xcode项目中拥有一个Web应用程序目标和一个单独的工作目标,而不会被vapor xcode覆盖?

由于 --TJ

1 个答案:

答案 0 :(得分: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",
        ]
)

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

Sources | - App - Worker - Shared

共享目标包含App和Worker可执行目标所需的所有共享代码。

现在,如上所述定义Procfile非常有效。我现在有一个Web应用程序和一个工作进程。

干杯 --TJ