【问题标题】:Is there an autogeneration script for JHipster?JHipster 有自动生成脚本吗?
【发布时间】:2015-05-20 07:56:29
【问题描述】:

我有许多 Jhipster 应用程序要搭建。

当您有许多表时,通过键入名称、字段和关系来创建实体既费时又乏味且容易出错。

针对我的数据库运行的 SQL 脚本在哪里?输出脚本的脚本,该脚本可以作为批处理文件运行,以编程方式创建实体。

顺便说一句,很棒的产品。

【问题讨论】:

    标签: jhipster


    【解决方案1】:

    JHipster 生成 Liquibase 变更日志,没有 SQL 脚本(但基本相同,只是独立于数据库,版本更容易)。

    您想要为生成器编写脚本:它还不存在。

    Yeoman 生成器通常不会以这种方式工作:一个很好的理由是每个问题都有相当多的验证,因此通常回答它们比编写脚本更不容易出错。

    然后,您有一个特定的用例,因为您想自动生成多个具有相同代码和数据库表的应用程序:我不知道这背后的原因,但您可以理解,对于“正常”情况,这将被认为是一种不好的做法。

    【讨论】:

    • 我面临的是一个机器人过程 - 在 Jhipster 中为每个表创建一个实体 - 使用列名和类型为每个表列创建一个属性 - 为定义的每个关系创建一个关系Mysql 数据库关系 当输入由数据库模式明确指定时,这是很多类型的“yo jhipster:entity.....”等。我正在寻找一个针对数据库运行的脚本(可能使用 SQL)并将其输入到一个键盘机器人中以驱动 Jhipster。这不会是一个坏习惯,不是吗?
    • 好的,但这仍然是一个非常具体的用例。我希望能够编写实体子生成器的脚本:它不会很复杂(基本上我们会自动回答问题)。它还不存在。
    • 谢谢朱利安。我正在考虑尝试使用 Robot for Java。 Expect 看起来也是一个不错的选择。除非您想提出其他建议?
    【解决方案2】:

    我认为这永远不会太晚。 我阅读了这个post 并尝试了一个自动生成脚本,根据该帖子的说明和其中的链接来生成我的实体。 下面的示例脚本创建了一个“书”实体。 说明:

    1. 在项目目录下创建一个后缀为.cmd的批处理文件 并将下面的脚本作为内容。
    2. 使用“cmd”命令打开 Windows 控制台(控制台 1)。
    3. CD 到您的 JHipster 项目目录。
    4. 打开第二个控制台(控制台 2)。
    5. CD 到您的 JHipster 项目目录,如上。
    6. 在控制台 2 中运行脚本。
    7. 立即点击 Console 1 的标题栏,获取 重点。

    您将看到您的图书实体正在创建中。 从那里您可以手动编辑实体的 JSON 文件并重新运行(这次是手动!!)该实体的“yo jhipster:entity”命令。 您可以将所有具有所有字段和关系的实体放入脚本中并享受其中的乐趣。 如果您有一个 UML 工具生成这样的脚本,这可能会非常有用。

    ping 是为了暂停正在发送到具有焦点的控制台窗口的输入,因为命令“yo jhipster:entity”需要一些时间来呈现第一个提示,有时还需要一些时间。

    @if (@CodeSection == @Batch) @then
    
    @echo off
    
    rem Use %SendKeys% to send keys to the keyboard buffer
    set SendKeys=CScript //nologo //E:JScript "%~F0"
    rem set SendKeys=CScript //nologo //E:JScript
    
    rem Start the other program in the same Window
    start "" /B cmd
    
    ping -n 12 -w 1 127.0.0.1 > NUL
    %SendKeys% "yo jhipster:entity book{ENTER}"
    ping -n 2 -w 1 127.0.0.1 > NUL
    %SendKeys% "{Y}{ENTER}"
    ping -n 2 -w 1 127.0.0.1 > NUL
    %SendKeys% "name{ENTER}"
    ping -n 2 -w 1 127.0.0.1 > NUL
    %SendKeys% "{ENTER}"
    ping -n 2 -w 1 127.0.0.1 > NUL
    %SendKeys% "{Y}{ENTER}"
    ping -n 2 -w 1 127.0.0.1 > NUL
    %SendKeys% " "
    ping -n 2 -w 1 127.0.0.1 > NUL
    %SendKeys% "{DOWN}"
    ping -n 2 -w 1 127.0.0.1 > NUL
    %SendKeys% " "
    ping -n 2 -w 1 127.0.0.1 > NUL
    %SendKeys% "{DOWN}"
    ping -n 2 -w 1 127.0.0.1 > NUL
    %SendKeys% " "
    ping -n 2 -w 1 127.0.0.1 > NUL
    %SendKeys% "{ENTER}"
    ping -n 2 -w 1 127.0.0.1 > NUL
    %SendKeys% "4{ENTER}"
    ping -n 2 -w 1 127.0.0.1 > NUL
    %SendKeys% "64{ENTER}"
    ping -n 2 -w 1 127.0.0.1 > NUL
    %SendKeys% "N{ENTER}"
    ping -n 2 -w 1 127.0.0.1 > NUL
    %SendKeys% "N{ENTER}"
    ping -n 2 -w 1 127.0.0.1 > NUL
    %SendKeys% "{ENTER}"
    
    goto :EOF
    
    @end
    
    // JScript section
    
    var WshShell = WScript.CreateObject("WScript.Shell");
    WshShell.SendKeys(WScript.Arguments(0));
    

    【讨论】:

      猜你喜欢
      • 2016-07-20
      • 2021-12-01
      • 2015-08-04
      • 2015-02-01
      • 2018-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多