GraalVM与Java静态编译:原理与应用
上QQ阅读APP看书,第一时间看更新

3.3 在IDE中打开GraalVM

GraalVM项目庞大,结构复杂,推荐通过IDE浏览、查看代码。本节介绍如何将GraalVM导入IntelliJ IDEA(以下简称IDEA)和Eclipse中。

GraalVM的子项目(按mx的组织形式被称为套件)包括了本章前几节所介绍的Truffle框架、Sulong框架、Graal Compiler以及Substrate VM静态编译框架等,每个子项目又包含了若干个模块(按mx的组织形式被称为projects)。最终整个项目由225个模块组成,包括41个Substrate VM子项目模块,112个编译器子项目模块,42个Truffle子项目模块和30个SDK子项目模块。在$GRAALVM_HOME目录下用mx --primary-suite=substratevm-projects命令可以看到各个子项目包含的模块的详细信息。

这么复杂的组织形式显然无法靠手工操作将它们逐个添加到IDE的工作环境中,我们需要使用mx工具自动生成IDE配置。我们知道suite.py文件定义了套件中各个模块之间、套件与其他套件,以及套件与其他第三方库的依赖关系,mx工具可以据此自动化生成IDE的项目配置文件。开发者只需在自己的IDE中进行简单的配置,IDE就能够依据这些配置文件自动将项目的工作环境搭建好。常用的mx IDE配置命令如下。

  • ideinit:构建或重建所有支持IDE(Eclipse、IDEA和NetBean)的项目配置文件。
  • ideclean:清除所有生成的IDE项目配置文件。
  • eclipseinit:仅构建或者重建Eclipse的项目配置文件。
  • intillijinit:仅构建或者重建IDEA的项目配置文件。
  • netbeaninit:仅构建或者重建NetBean的项目配置文件。

第一次生成项目配置文件时,需要在$GRAALVM_HOME目录下依次输入下列命令:

mx build --primary-suite=substratevm --dependencies=TRUFFLE_NFI
mx --primary-suite=substratevm ideinit

第一行命令会为初始化IDE项目配置准备必要的依赖组件;第二条命令则会执行IDE项目配置文件的初始化,这里的ideinit可以按实际需要更换为eclipseinit、intillijinit和netbeaninit中的任意一个。

这两行命令中的--primary-suite=用于指定主套件,也可以用短参数-p加空格来替代,两者具有相同的效果。如果不设置主套件参数就会进入substratevm目录执行mx命令。这两条命令均会执行一段时间,从涉及的各个suite.py中生成IDE配置,并且下载所需的第三方库。

命令成功运行完成后,各个模块的目录下都会生成IDE的项目配置文件。接下来只需要在IDE的图形化界面上选择File→Open命令定位到$GRAALVM_HOME根目录,然后按照IDE的指导逐步完成即可,此处不再赘述。前文所述的各个模块(suite.py中的projects项)在Eclipse中以项目的形式组织到一个工作区(workspace)里,在IDEA中以模块的形式组织到一个项目里。

当GraalVM的代码更新后,原有的项目组织结构可能会发生变化,可能有的模块会被删除,也有可能会添加新的模块。因此需要再次执行对应的IDE初始化命令,刷新IDE的组织结构,有时可能需要删除原来的IDE配置信息,执行一次全新的IDE初始化。所需命令如下:

mx ideclean
mx ideinit