认识CUBA平台的CLI

毫无疑问,软件开发人员(尤其是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.gradlebuild.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.xmlmetadata.xml中注册-不管它是否持久。 最后,CLI将生成一个消息包,以提供实体属性的本地化。
  • 枚举 –生成一个实现EnumClass接口的Enum,带有本地化消息的字段以及有用的fromId方法。

商业逻辑

  • 实体侦听器 –搭建实现Entity Listeners接口的Spring组件,并在相应的Entity类中声明它。 当实体更改状态时,此类侦听器将被钩住。 您可以在此处找到更多信息。
  • 服务 –搭建全局模块中的接口及其核心中的实现。 为了可从Web模块使用,它已在web-spring.xmlWebRemoteProxyBeanCreator bean定义中注册
  • bean –只需生成一个Spring组件,并节省大约150个字符的键入时间:)。
  • config –在具有指定源类型(系统,数据库或应用程序)的指定模块中为CUBA配置接口提供一个存根。 在文档的这一章中找到有关CUBA配置接口的更多信息。

用户界面

  • 屏幕 –搭建GUI屏幕。 该命令支持创建:
    –一个新的空白屏幕
    –扩展现有的 –浏览器–包含实体列表,其上的CRUD操作和过滤器的屏幕 –编辑器–用于创建或编辑单个实体的屏幕。

该命令使用其本地化消息包来支持xml屏幕描述符及其Java控制器。 也可以选择将屏幕添加到主菜单。

杂项

  • 应用程序组件 –将您的CUBA应用程序可嵌入(可插入)到另一个CUBA应用程序中。 在文档中找到有关应用程序组件概念的更多信息。 该命令生成app-component.xml文件,该文件定义了对其他组件的依赖关系,描述了现有的应用程序模块,生成的工件和公开的应用程序属性。 运行该命令时,它将提示您将当前模块前缀更改为唯一的前缀,以避免冲突。 如果更改前缀,它还将调整settings.gradlebuild.gradle文件。
  • update-script –创建一个SQL更新脚本文件,其位置和名称符合CUBA约定。 CUBA平台包括在应用程序启动时应用更新脚本的机制。 这些脚本应按照从旧到新的历史顺序执行。 为确保此类排序,更新脚本应放在modules / core / db / update / {USED DATABASE} / {yy} /目录下,并命名为{yyMMdd}-{INCREMENT}-{SCRIPT NAME} .sql
  • 自定义模板 –根据开发人员定义的速度模板生成项目文件。 模板机制允许声明性地扩展CLI命令集,而无需编译。 在此处找到有关CLI模板引擎的更多信息。

如您所见,CLI承担了大量工作,以保护开发人员免受无聊但不可避免的例行攻击。

可扩展性

首先,如前所述,CLI提供了一个模板引擎来扩展其命令集,而无需更改源并重新编译它。 CLI模板包括两部分:

  1. template.xml文件,以声明方式描述了自定义命令要询问的问题。
  2. 一组文件(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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/345505.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【渝粤题库】国家开放大学2021春2603城市轨道交通安全管理题目

试卷代号:2603 2021年春季学期期末统一考试 城市轨道交通安全管理 试题 2021年7月 一、单项选择题(每小题2分,共20分,将正确答案选项的字母填入题目中的括号内) 1.( )是将企业作为安全管理的主体,是指经济和…

将matlab中数据输出保存为txt或dat格式

一、将matlab中数据输出保存为txt或dat格式的三种方法。 第一种方法:save(最简单基本的) 具体的命令是:用save *.txt -ascii x x为变量 *.txt为文件名,该文件存储于当前工作目录下,再打开就可以打开后,数据有可能是以…

【渝粤题库】国家开放大学2021春2633轨道交通信号与通信系统题目

试卷代号:2633 2021年春季学期期末统一考试 轨道交通信号与通信系统 试题 2021年7月 一、单项选择题(每小题2分,共20分,将正确答案选项的字母填入题目中的括号内) 1.城市轨道交通系统的安全、速度、输送能力和效率与信…

【渝粤题库】国家开放大学2021春2724市场营销原理与实务题目

试卷代号:2724 2021年春季学期期末统一考试 市场营销原理与实务 试题 2021年7月 注意事项 一、将你的学号、姓名及分校(工作站)名称填写在答题纸的规定栏内。考试结束后,把试卷和答题纸放在桌上。试卷和答题纸均不得带出考场。监…

马尔可夫链笔记

1 引言 之前学习了伯努利过程和泊松过程,它们是无记忆性,不依赖于过去的状态,今天学习了马尔可夫链,它会依赖于过去的过程,更准确的说是依赖于过去的某种状态。 2 离散时间的马尔可夫链(Markov Chain, MC…

【渝粤题库】国家开放大学2021春2768养禽技术题目

试卷代号: 2768 2021年春季学期期末统一考试 养禽技术 试题 2021年7月 一、单项选择题(每小题3分,共30分) 1.下列品种中属于兼用型鸭品种的是( )。 A.高邮鸭 B.北京鸭 C.绍兴鸭 D.金定鸭 2.鸡的第一限制性氨基酸是( )。 A.蛋氨酸 …

【渝粤题库】国家开放大学2021春3608矿井水害防治题目

试卷代号:3608 2021年春季学期期末统一考试 矿井水害防治 试题 2021年7月 一、单项选择题(本题型共10题,每题3分,共30分。以下各题每题只有一个正确答案,将正确答案的代号填入题中的括号内) 1.划分为水文地…

解决气味

有时我们可能会在代码库中遇到一些巨大的if语句。 这些语句必须维护并一次又一次地更改相同的代码块。 在if语句检查变量是否属于某个值范围内的情况下,这也是常见的。 假设您有一个枚举 public enum FoodType {FRUIT,VEGETABLES,RED_MEAT,WHITE_MEAT,FISH,DIARY,…

「协方差」与「相关系数」的概念

一、协方差: 可以通俗的理解为:两个变量在变化过程中是同方向变化?还是反方向变化?同向或反向程度如何? 你变大,同时我也变大,说明两个变量是同向变化的,这时协方差就是正的。 你…

【渝粤题库】国家开放大学2021春3929电气安全技术题目

试卷代号:3929 2021年春季学期期末统一考试 电气安全技术 试题(开卷) 2021年7月 一、单选题(每小题3分,共30分) 1.定时过电流保护的动作电流应躲过( )。 A.线路末端的最大短路电流 B.线路末端的最小短路电流…

【渝粤题库】国家开放大学2021春4010渠道管理题目

试卷代号:4010 2021年春季学期期末统一考试 渠道管理 试题 2021年7月 一、单项选择题(在备选答案中,有一个正确答案,请将正确答案的字母填入括号内。每小题2分,共20分) 1.渠道管理人员一般位于企业的中低层…

在matlab中输出、读取多个文件

%% 输出及读取多个文件 % filepathD:\new\;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 输出多个文件 t_start 1; % start time t_end 100; % ending time min arr_rate 50; % data arrival rate at HAP******* for k1:5 M int2str(k); N .txt.; L ./; output [L M N];…

【渝粤题库】广东开放大学 外贸会计1 形成性考核

选择题 题目: 题干 下列选项中,属于反映会计信息的基本过程和手段的是()。 选择一项或多项: 题目: 当受益人对信用证开证行能否有效执行付款缺乏信心时,受益人可以要求开证申请人另外申请一家…

垃圾收集 java_关于Java垃圾收集

垃圾收集 java本文讨论的是使用的最流行的框架之一带来的开销–我敢打赌,几乎没有应用程序不使用java.util.Collections。 本文基于以下事实:框架为例如集合的初始大小提供了默认值。 因此,我们有一个假设,即大多数人不会费心地自…

在git bush中如何退出vim编辑器

编辑器有三种模式: 命令行模式末行模式输入模式 常用命令 按Esc退出输入模式进入命令行模式也是系统默认模式。 o,i,a都可以进入输入模式。在命令模式下键入ZZ或者:wq保存修改并且退出 。如果只想保存文件,则键入:w&#xff0c…

【渝粤题库】广东开放大学 互联网营销 形成性考核

选择题 题目:下面的哪个调研内容属于经济环境调研?() 题目:()的目的就是加强与客户的沟通,它是是网络媒体也是网络营销的最重要特性。 题目:4Ps策略中4P是指产品、价格、…

【渝粤题库】广东开放大学 信息安全数学基础 形成性考核 (2)

选择题 题目:2.设a,b都是非零整数,若a|p,b|a, 则( ) . 题目:3.大于20且小于50的素数有()个. 题目:4.下列四个选项中,( ) 是安全素数. 题目:5.设b6,则余数r ( )为最小正余数. 题目:16…

带Spring Boot的GWT

介绍 我最近一直在研究用Java编写UI代码的选项。 在我以前的文章中,我研究了Eclipse RAP,发现它可以与Spring Boot集成在一个可执行jar中。 这次我想对GWT做同样的技巧。 每个人都喜欢Spring Boot。 它使很多事情变得更加干净和容易。 但是从历史上看&a…

matlab中统计数组中各数字(元素)出现的次数

1. tabulate 调用MATLAB自带的函数tabulate统计一个数组中各数字(元素)出现的频数、频率 【例1】统计数值型数组中各元素出现的频数、频率。 >> x [2 2 6 5 2 3 2 4 3 4 3 4 4 4 4 2 26 0 4 7 2 5 8 3 1 3 2 5 3 …

【渝粤题库】广东开放大学 大学英语B 形成性考核

选择题 题目: Do you still get free plastic bags from the supermarkets? Things have changed. China has banned free plastic bags at shops and supermarkets, and people have to pay for using plastic bags. The rule started on June 1. It came becaus…