毫无疑问,软件开发人员(尤其是Java开发人员)的世界充满了键盘狂热者,最好是一次单击即可键入10-15个字母。 而且我们的社区也不例外,因此经常有人问我们“如何在没有CUBA Studio的情况下启动项目?”之类的问题。 或“是否有轻量级的免费命令行替代CUBA Studio?”。 所以,大家好消息!
免费CLI是否可以代替商业CUBA Studio?
CLI不被视为CUBA Studio的替代品,它还有另一个使命。 CLI对于对Spring框架,JPA和CUBA基础结构有丰富经验的开发人员非常有用,并且(很重要!)在黑色窗口中使用灰色字母感到很舒服。 简而言之,cuba-cli是一个命令行实用程序,使您可以轻松地基于CUBA Platform创建项目。 此外,它提供了主要项目工件的轻量级支架:实体,屏幕,服务等。
同时Studio保持其利基地位,可让您轻松了解CUBA世界。 它提供了一个直观的用户界面,即使没有任何JPA或Spring或任何底层技术的经验,即使是CUBA的新手也可以在几分钟内设计出他们的第一个应用程序……实际上,您不需要编写任何代码即可进行开发标准的CRUD应用程序– Studio会为您完成。 对于从另一个生态系统迁移到CUBA的人们以及习惯于在IDE中获得终极舒适的人们,Studio也是一个绝佳的选择。
综上所述,CUBA Studio更多地是关于“边做边学”和巨大的“省时”,而CLI是为您编写强制性样板例程的主力军。
什么CLI可以?
显然,您必须先安装CLI。 它支持主要的操作系统,您可以在此处找到每个操作系统的安装指南。 安装后,只需在命令行中输入cuba-cli即可 ,就是这样–我们准备开始一个新项目或使用现有项目进行操作。 通过点击选项卡,您可以找到列出的所有受支持的命令。 选择或键入help命令,它将为您简要介绍每个命令。 让我们看看这些命令在后台的作用,以及它们如何节省开发人员的时间并延长键盘的使用寿命:
一般用途
- help,version,exit,cd –这些命令显然不会影响您的源代码,并且从名称中可以清楚地理解它们的操作,所以让我们跳过它们:)。
项目设置和全局设置
- create-app –指导完成新的CUBA项目所需的步骤:项目名称,名称空间,根软件包,平台版本和项目中使用的数据库。 该项目将包含全局(可从核心和Web模块访问),核心(用于业务逻辑的服务器端层)和Web(用于屏幕控制器和其他GUI逻辑的服务器端层)模块。
- polymer –基于Google开发的Polymer库,将新客户端添加到您的应用程序中。 它通过添加新模块的配置和任务来修改settings.gradle和build.gradle 。 它还会创建所需图像资源的文件,并为Polymer前端应用程序生成登录,菜单和其他有用的Web组件。
- 主题 –在modules / web目录下创建一个特殊的文件夹结构,一些用于标记应用程序的图像(登录图标,菜单图标和favicon)以及一些scss文件,您可以在其中修改默认方案。 还将webThemesModule模块及其配置添加到settings.gradle和build.gradle文件中。 最后,此命令添加了deployThemes gradle任务,以便无需重新启动服务器即可查看更改。 文档的此部分提供有关此主题的详细信息。
- add-component –将现有的应用程序组件插入您的应用程序。 它将新行添加到构建gradle的dependency块中,并修改Web模块的web.xml ,将应用程序组件的主包添加到appComponents上下文参数中。
领域建模
- 实体 –为JPA实体及其DDL脚本生成存根。 此实体还将根据实体类型在persistence.xml或metadata.xml中注册-不管它是否持久。 最后,CLI将生成一个消息包,以提供实体属性的本地化。
- 枚举 –生成一个实现EnumClass接口的Enum,带有本地化消息的字段以及有用的fromId方法。
商业逻辑
- 实体侦听器 –搭建实现Entity Listeners接口的Spring组件,并在相应的Entity类中声明它。 当实体更改状态时,此类侦听器将被钩住。 您可以在此处找到更多信息。
- 服务 –搭建全局模块中的接口及其核心中的实现。 为了可从Web模块使用,它已在web-spring.xml的WebRemoteProxyBeanCreator bean定义中注册 。
- bean –只需生成一个Spring组件,并节省大约150个字符的键入时间:)。
- config –在具有指定源类型(系统,数据库或应用程序)的指定模块中为CUBA配置接口提供一个存根。 在文档的这一章中找到有关CUBA配置接口的更多信息。
用户界面
- 屏幕 –搭建GUI屏幕。 该命令支持创建:
–一个新的空白屏幕
–扩展现有的 –浏览器–包含实体列表,其上的CRUD操作和过滤器的屏幕 –编辑器–用于创建或编辑单个实体的屏幕。
该命令使用其本地化消息包来支持xml屏幕描述符及其Java控制器。 也可以选择将屏幕添加到主菜单。
杂项
- 应用程序组件 –将您的CUBA应用程序可嵌入(可插入)到另一个CUBA应用程序中。 在文档中找到有关应用程序组件概念的更多信息。 该命令生成app-component.xml文件,该文件定义了对其他组件的依赖关系,描述了现有的应用程序模块,生成的工件和公开的应用程序属性。 运行该命令时,它将提示您将当前模块前缀更改为唯一的前缀,以避免冲突。 如果更改前缀,它还将调整settings.gradle和build.gradle文件。
- update-script –创建一个SQL更新脚本文件,其位置和名称符合CUBA约定。 CUBA平台包括在应用程序启动时应用更新脚本的机制。 这些脚本应按照从旧到新的历史顺序执行。 为确保此类排序,更新脚本应放在modules / core / db / update / {USED DATABASE} / {yy} /目录下,并命名为{yyMMdd}-{INCREMENT}-{SCRIPT NAME} .sql 。
- 自定义模板 –根据开发人员定义的速度模板生成项目文件。 模板机制允许声明性地扩展CLI命令集,而无需编译。 在此处找到有关CLI模板引擎的更多信息。
如您所见,CLI承担了大量工作,以保护开发人员免受无聊但不可避免的例行攻击。
可扩展性
首先,如前所述,CLI提供了一个模板引擎来扩展其命令集,而无需更改源并重新编译它。 CLI模板包括两部分:
- template.xml文件,以声明方式描述了自定义命令要询问的问题。
- 一组文件(xml,java或任何其他格式),其中包含Apache Velocity脚本,因此可以由Velocity模板引擎对其进行处理。 来自template.xml文件的问题的答案将作为参数传递,并且可以在Velocity脚本中访问。
该维基页面提供有关CLI模板的详细信息。
其次,CLI提供扩展点来加载自定义插件,并公开可在自定义插件中使用的公共事件。 使用这种机制,开发人员可以创建具有最大灵活性的新命令并扩展现有命令,例如,为screen命令添加其他选项,例如查找。 您可以在此处找到CLI插件的文档和开发指南。
最后,CUBA CLI是一个开源项目,其源代码发布在GitHub上 。 CUBA团队很高兴看到您的贡献(请参阅贡献指南 )以及您可能遇到的问题 。 因此,如果您看到一些常见但未发现的用例,请随时帮助社区并向我们发送您的请求!
结论
这只是我们CLI的起点,我们希望它将帮助您使开发过程更加流畅和快速,特别是如果您不使用CUBA Studio。 我们将进一步改善CLI,并已经在规划路线图– 在这里您可以看到我们要在第二版中发布的功能。
最后,我也想分享一条建议。 开始您的第一个CUBA项目时,对于平台的初始评估,CLI可能会变得过于繁重。 CUBA Studio提供30天的试用期 ,因此,如果您或您的同事不熟悉该框架,建议在初始阶段使用CUBA Studio并以交互方式发现平台功能。 由于试用期已结束,因此您可以决定是否要订阅并继续使用CUBA Studio或移至CLI。
最后,您可以在我们的YouTube频道上观看CLI演示视频。
PS哦,是的,几乎忘了说CLI是用Kotlin编写的。 这是我们第一次在生产中使用这种语言-到目前为止,一切都很好!
翻译自: https://www.javacodegeeks.com/2018/08/cli-cuba-platform.html