【问题标题】:Place Play Framework 2.1 database evolutions in sub project?在子项目中放置 Play Framework 2.1 数据库演变?
【发布时间】:2013-05-13 14:24:09
【问题描述】:

我有一个Play Framework 2.1 应用程序,并且数据库代码位于一个子项目中——以防将来我想支持多种后端,例如基于文件的数据库或 Cassandra。

然而,目前数据库是一个关系数据库,我想使用Play's database evolutions 机制。但我不知道如何,甚至是否有可能将进化脚本放在我的子项目(它们所属的地方)中,而不是放在主项目中。 — 如果我将它们放在 sup 项目中,Play 显然会忽略它们。问题:我可以将我的进化脚本放在我的子项目中吗?我该怎么做?

编辑 2015 年 10 月:我现在使用 FlywayDB,而不是 Play 的内置进化,大约一年以来。我衷心推荐 FlywayDB。您可以使用 FlywayDB 以任何方式在您的子项目中进行演化,并且您需要自己编写开始演化的代码。 /编辑


这是我迄今为止尝试过的:

  1. 创建一个子项目,./modules/evolutions-test/

  2. 在该子项目中,创建一个进化脚本:
    ./modules/evolutions-test/conf/evolutions/default/1.sql

  3. 不要在子项目中配置数据库连接信息——显然, 这些设置将被忽略 (?)。在 main 中配置连接信息 项目配置文件,例如:

    db.default.driver=org.postgresql.Driver
    db.default.url="jdbc:postgresql://192.168.0.123/test_evolutions"
    db.default.user=test_evolutions
    db.default.password=...
    
  4. 包含 JDBC 和 PostgreSQL 驱动程序作为子项目的依赖项。

  5. 让我的主项目依赖于子项目。
    (并在 Play 的控制台中点击 reload。)

这并没有让 Play 意识到有一个进化脚本可以应用到子项目中。相反,Play 会查找并使用位于 main 项目 conf 目录中的任何进化脚本。所以我想我可以从主项目软链接到子项目,这样仍然可以将进化脚本的内容保留在子项目中。

(我已经在下面回答了我自己的问题,因为一旦我写了这个问题,我不妨现在发布所有这些 - 它实际上应该对其他人有用?不应该有点多人们考虑将数据库代码放在子模块中?)

【问题讨论】:

    标签: database playframework-2.1


    【解决方案1】:

    目前不可能?见:
    https://groups.google.com/d/msg/play-framework/548JUZnjStE/x1hbXyc7PQwJ
    这是关于如何以某种方式“修复”的讨论。

    相反,我可以从
    <main-project>/conf/evolutions/default
    软链接 致
    <main-project>/modules/evolutions-test-project/conf/evolutions/default

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多