项目开发

本章节介绍如何创建新项目、打开已有项目以及如何启动应用程序。

创建新项目

Studio 的提供了一个向导可以用来从头创建 Jmix 新项目。

  1. 用主菜单 File → New → Project 打开 New Project 向导。或者可以在 IDE 的欢迎界面点击 New Project

  2. 在弹窗中选择 Jmix Project

    new project create

    这一步配置项目的主要设置:

    • 可以使用 Repository 字段提供的默认仓库,或者选择 Custom repository 配置自定义仓库。

    • 如需使用本地仓库的制件,可以勾选 Use local Maven repository

    • 选择项目中需要使用的 Jmix version。如果没有特殊要求,用最新版即可。

      对于 beta 测试或者尝试 Jmix 的最新功能,你可能需要安装 Jmix 框架的不稳定版,这些版本以 BETA 或 SNAPSHOT 做后缀。勾选 Show unstable versions 复选框便可在 Jmix version 下拉框看到这些版本。

    • Project JDK 字段,默认会选择与你环境变量 JAVA_HOME 一致的 JDK 版本。如果你看到 <No JDK>,那么需要在列表中点击 Add JDK 并选择 JDK 的安装目录,例如,Windows 的 C:\Program Files\BellSoft\LibericaJDK-11 或者 macOS 的 /Library/Java/JavaVirtualMachines/liberica-jdk-11.jdk/Contents/Home

  3. 下一步中,选择一个模板创建空项目。

    new project templates
  4. 然后可以设置项目名称、位置和语言。

    new project name
    • Project name 只能包含拉丁字母、数字和下划线。

    • Project location 是新建项目的文件夹路径。可以输入新路径或者点击字段旁边的按钮进行选择。

    • Base package 是 Java 类和字段的基础包名。请谨慎选择包名,因为一但选择,后续只能手动修改包名和移动类文件,目前 Studio 还不支持自动更换包名。

    • Project id 可选。如果设置了,Studio 会用这个 id 作为实体、表格、bean 名称的前缀。项目 id 不能超过 7 个字母。

    • 使用 Locales 字段打开语言设置编辑器,可以为项目增加更多的语言支持。后续如果需要,也可以再修改。

  5. 点击 Finish 按钮,会在指定的文件夹创建空项目,Studio 会自动使用 Gradle 文件构建项目并对项目建立索引。

    如果是第一次在 Jmix Studio 中编写项目,请 登录 Jmix 账号

    当项目依赖同步完成,且索引也构建完成之后,可以在 Jmix 工具窗口 查看 Jmix 项目树。

现在可以使用新项目进行开发了。

打开已有项目

按照下列步骤打开已有项目:

  1. 在 IDE 的欢迎窗口点击 Open

    new project welcome

    如果此时已经打开了其他项目,则可以通过主菜单 File → Open 打开。

  2. 在文件系统对话框中,选择包含 build.gradle 文件的项目根目录,然后点击 OK

    new project build
  3. 在随后的弹窗中,选择 Open as Project

    new project open

    等待 Gradle 同步和项目索引完成。

    如果是第一次在 Jmix Studio 中编写项目,请 登录 Jmix 账号

    然后会在 Jmix 工具窗口 展示 Jmix 项目树。

如果项目是第一次打开,那么请从主菜单打开 File → Project Structure

new project structure
  • 确保 Project SDK 字段的值与你的环境变量 JAVA_HOME 的值一致。如果你看到 <No JDK>,那么需要在列表中点击 Add JDK 并选择 JDK 的安装目录,例如,Windows 的 C:\Program Files\BellSoft\LibericaJDK-11 或者 macOS 的 /Library/Java/JavaVirtualMachines/liberica-jdk-11.jdk/Contents/Home

  • 确保 Project language level 的值与对应的 JDK 版本一致。例如,如果 JDK 是 11,那么这个字段必须是 11 - Local variable syntax for lambda parameters

另外,如果项目已经打开过,还可以从最近项目打开。可以在 IDE 的欢迎窗口或者从主菜单的 File → Open Recent 打开最近项目。

升级项目

本章节介绍为项目升级至一个较新的 Jmix 版本的过程。

我们建议将你的项目通过版本控制软件进行管理,并在升级前提交所有的改动。这样可以看到升级过程中做了哪些修改,以便由于某些原因导致升级失败后能快速回滚至之前的版本。

  1. 按照 前一节 的描述打开项目。

  2. Jmix 工具窗口,点击 Settings 按钮并选择 Project Properties

    upgrade tool window
  3. Jmix Project Properties 弹窗中,点击平台版本旁的 Change​ 超链接。

    upgrade properties
  4. 然后从下拉列表选择需要的 Jmix 版本。

    对于 beta 测试或者尝试 Jmix 的最新功能,你可能需要安装 Jmix 框架的不稳定版,这些版本以 BETA 或 SNAPSHOT 做后缀。勾选 Show unstable versions 复选框便可在平台版本下拉框看到这些版本。

    upgrade unstable

    我们不推荐将 BETA 或 SNAPSHOT 版本用于生产环境。

  5. 可以点击 Release Notes 链接切换至文档页面,在文档页面查看新版本增加的功能、改进和 API 的破坏性改动。

    upgrade release notes
  6. 如果是升级到一个新的功能版本,例如,从 1.0.X 升至 1.1.X,则会显示 Migration Required 部分内容。

    upgrade migration required

    点击 More info​ 链接,可以打开一个新的弹窗,展示 Studio 将要自动对项目做的修改内容。

    upgrade more info
  7. 点击 OK 确认升级平台版本,然后在 Project Properties 窗口点击 OK。Studio 会展示迁移窗口。

    upgrade migrate
  8. 点击 Migrate。Studio 会开始自动迁移并运行 Gradle 的 clean 任务。

  9. 如果是升级功能版本,可以在 Release Notes 中查看 Breaking Changes 部分,并对项目做相应的修改。

  10. 通过执行 Jmix Tool Window → Gradle → Assemble 组装你的项目。

    upgrade assemble

    如果编译出错,则需要根据错误信息进行修复。

  11. 展开 Jmix Tool Window 中的 Data Stores 节点,右键点击你的数据存储,然后选择 Generate Liquibase Changelog

    upgrade changelog

    这样可以在项目中为框架中的数据库结构变化生成相应的数据库迁移脚本。

启动应用程序

当 Studio 导入 Jmix 项目之后,它会创建 Run/Debug 配置。可以使用主工具栏的按钮运行和停止你的应用程序。

如需运行应用程序并用调试器连接,只需要点击所选的 Jmix Application 配置旁边的调试按钮即可。

run button

运行状态在 Debug 工具窗口的 Console 标签展示。

run link

可以点击控制台输出的链接访问应用程序。

可以点击主工具栏的按钮或者 Debug 窗口的按钮停止应用程序服务。

Run/Debug 运行配置

从 IDE 编辑 “Jmix Application” 的 Run/Debug 配置可以调整应用程序运行的设置。

在工具栏点击 Jmix Application 元素,然后在菜单中选择 Edit Configurations 打开配置窗口。

run conf

另外,也可以从主菜单打开:Run → Edit Configurations

Run/Debug Configurations 对话框:

run dialog

下列这些设置可能是需要修改的:

  • Before launch - 在启动应用程序之前需要执行的任务。Jmix 项目自动配置了下列启动前任务:

    • Clean Hot Deploy Conf Directory - 清理以前运行遗留的热部署文件。

    • Check Jmix Database - 检查数据模型和数据库结构的不同,并生成 数据库更改 脚本。如果你不需要每次启动应用程序都检查并生成 Liquibase 脚本,可以删除这个任务(这个任务的功能可以通过 数据存储 的右键菜单手动执行)。

  • Environment variables - Gradle 进程和应用程序需要使用的环境变量。

  • VM options - 传递给 Gradle 进程的 JVM 选项。

    注意,这里的 VM 参数不会直接影响运行的应用程序。如需将参数传递给应用程序的 JVM,需要在 build.gradle 按如下配置 bootRun 任务:

    bootRun {
        if (System.getProperty('jvmArgs')) {
            jvmArgs = (System.getProperty('jvmArgs').split("\\s+") as List)
        }
    }

    然后可以在 VM options 字段设置 JVM 选项,示例:

    -DjvmArgs="-Duser.timezone=Europe/London -Dsome.property=somevalue"

使用非默认 JDK

IntelliJ IDEA 和 Gradle 默认都使用 JAVA_HOME 环境变量定义的 JDK 组装和运行 Java 项目。如果希望在不修改系统全局配置的情况下,在项目中使用非默认的 JDK,则需要几步配置。

假设 JAVA_HOME 环境变量指向 JDK 8,而项目中想使用 JDK 11。

按照下面步骤配置:

  1. 从主菜单打开 File → Project Structure

  2. 左侧菜单选择 SDKs。点击 + 按钮并选择 Add JDK

    jdk add
  3. 选择 JDK 11 的安装目录。点击 OK 保存。

  4. 如果是新建 Jmix 项目,则在 Project SDK 字段选择 “11”。

    对于已有项目,从主菜单打开 File → Project Structure 并修改 Project → Project SDK 的值。

  5. 切换至项目根目录,创建 gradle.properties 文件,包含如下内容:

    # JDK 11 的路径,根据你的环境修改。
    org.gradle.java.home = C:/Java/jdk-11.0.5.10-hotspot
  6. 编辑项目根目录的 build.gradle 文件,添加下面的语句:

    group = '...'
    version = '...'
    sourceCompatibility = '11'
    targetCompatibility = '11'
  7. 在 Gradle 工具窗口(一般在 IDE 右侧边),点击 Reload All Gradle Projects 刷新 Gradle 项目的配置。

当这些改动完成之后,项目会使用 JDK 11 编译和运行,而不需要修改系统的全局配置。

热部署

参阅 热部署 章节。