4.4. CUBA 设置

如果单击 CUBA > Settings 主菜单项,可以看到在 IDE 的设置中选中了 CUBA 部分。

CUBA 部分包含对所有在 Studio 实例中打开的项目都通用的设置。

  • Ask before saving DB scripts with DROP statements - 建议不要自动执行包含 DROP 语句的更新脚本。

  • Show warning if application server port is in use - 打开项目且 Tomcat 端口被占用时显示警告。

  • Use embedded browser to open application - 如果选中该选项,则双击 Runs At 项目树中的应用程序 URL 时将使用内嵌 Web 浏览器打开项目地址。

  • Visual designer and embedded browser zoom percentage - 界面设计器的布局预览默认缩放。也可以通过预览面板顶部的一个操作按钮稍后调整。

  • Enable integration - 如果要将此 IDE 实例与旧的 Studio SE 或 Studio Browser Edition 集成,选中此复选框。这样就可以在新的 IDE 中打开旧 Studio 的项目。另外,这个复选框也会启用与前端生成器命令行工具的通信。

  • Listening port - 用于集成旧 Studio 和 Frontend Generator 的端口。确保这个值与旧 Studio 的 IDE Port 字段中指定的值相同。

项目设置

下一级的 Project settings 部分包含当前打开的项目的设置。所有非默认值都存储在项目根目录的 studio-intellij.xml 文件中,可以将其添加到版本控制系统,以便在团队中的所有开发人员之间共享项目设置。

  • Check compatibility between data model and database scheme - 在启动应用程序服务时,如果数据模型的当前状态与数据库架构不一致时显示警告信息。

  • Generate DROP statements in separate update scripts - 为删除实体、属性或更改属性的数据类型的操作生成更安全的更新脚本。这些脚本分为两部分:在第一部分,列或表被重命名为 *__UNUSED,在第二部分对这些对象执行实际的删除操作。

  • Use NVARCHAR when generating scripts for MS SQL Server -如果启用此选项,对于 Microsoft SQL Server 数据库,使用 NVARCHAR 列类型存储所有 String 属性。

  • Generate script name in format - 指定 yyMMddHHmm 可以将当前时间添加到生成的数据库更新脚本的名称中,这有助于确保在团队工作中脚本的正确顺序。

  • Group update scripts by - 定义自动生成的数据库更新脚本如何按照目录分组。如果选择 YEAR,脚本按年份目录分组(20202021 等)。如果选择 MONTH,脚本按照下一级的月份目录分组(2020/102020/11 等)。对于大型项目来说,后者更加合适。

  • Do not delete columns started with - 此字段允许为表列指定一个前缀,Studio 将不跟踪具有此前缀的列。一般情况下,如果向映射到实体的表添加了一列,而不将列映射到一个实体属性,Studio 将生成删除此列的更新脚本。如果想避免丢失表中的列,可以在 Database Scripts 对话框中不包含此脚本,这个脚本也不会再次生成。或者通过 Do not delete columns started with 字段为此类列设置一个公共前缀,并相应地命名列。例如,在字段中输入 NOT_MAPPED_ 并将列命名为 NOT_MAPPED_CODE

  • Column length for enums with ID of String type - 此字段允许设置数据库列的长度,该列映射到具有 String 类型标识符的枚举类型的属性。例如,如果始终使用只由一个字符组成的短标识符,则可以将此字段设置为 1,以节省数据库空间。

  • Make plural forms - 根据英语语法构造名词的复数形式。

  • Repeat entity parent package for screens - 当 Studio 根据模板生成通用 UI 界面时,如果实体位于比 entity 包更深的一个包中,Studio 将为界面添加此包名。例如,如果 Customer 实体位于 com.company.sample.entity.crm 中,则其界面的默认包将是 com.company.sample.web.crm.customer

  • Use underscores in generated package names - 如果选中,包名称将包含以下划线分隔的单词,这些单词是根据以驼峰命名法命名的相应实体名称生成。例如,当为 com.company.sample.CustomerGrade 实体生成界面时,界面的包将是 com.company.sample.customer_grade。如果该选项关闭,则包名称为 com.company.sample.customergrade

  • Default parent package name for screens - 当根据与实体无关的模板生成通用 UI 时,可以在这里指定使用的默认包名替代”screens”(默认)。如果模板关联了实体,还会在包之前添加实体名称。例如,如果将此字段设置为”ui”并创建一个空白界面,则包的默认值为 com.company.sample.web.ui

  • Default entity attribute access modifier - 设置 Studio 在生成实体字段时使用的默认字段修饰符。

  • Generate entity name with underscore symbol - 如果选择,实体名称将具有 namespace_ClassName 格式,例如 sales_Customer。否则它将是 namespace$ClassName

  • Show module prefix migration dialog - 在项目打开时,显示模块定义迁移的弹窗,其中会建议将构建脚本中的模块定义改为新格式 - 用变量定义模块名称前缀。

  • Instant hot deploy - 此复选框允许关闭热部署。如果启用了热部署,则 Studio 会在应用或保存对视图、界面、消息或主菜单的更改时动态更新已部署的 Web 应用程序的 UI。

  • Scaffolding language - 在支持 Kotlin 的项目中选择使用何种编程语言生成代码。可选项为:KotlinJavaAlways Ask。如果您的项目混合了 Java / Kotlin 的内容,然后您想控制每次生成实体、服务、界面的脚手架代码,可以选择 Always Ask。该选项只有在项目支持 Kotlin 时才会出现。

  • Hot deploy compiled classes - 为基于 CUBA 7.2+ 的项目启用新的热部署机制。旧的机制需要复制 Java 源码到 Tomcat 配置目录并使用自定义的类加载器编译这些文件。新的机制会在 IDE 端编译这些文件,因此能热部署 Kotlin 代码。如果在使用新的热部署机制中遇到问题,可以尝试关闭该设置。

  • Hot Deploy Settings - 打开对话框来自定义热部署目录。例如,可能希望将 Web 门户的 HTML 文件和 JavaScript 文件所在的文件夹添加为部署目录。当更改这些文件时,Studio 会将它们复制到 Tomcat 中的各自对应的目录。因此,只需重新加载 Web 门户页面即可查看更改。

  • Screen Generation Settings - 影响界面生成的选项。这些设置在 NewScreen…​ 向导中使用。可用设置有:

    • Default form field width - 实体编辑器使用

    • Keep editor actions at the bottom - 实体编辑器以“全屏”模式打开时使用。

    • Force modal open type for editors - 实体编辑器以“对话框”模式打开时使用。

  • Fold messages in - 允许控制界面描述和界面控制器中的消息折叠。选中的话,消息键将替换为相应消息包中的实际值。

  • Message folding locale - 折叠(folding)消息时要使用的本地化消息文件。