在che中增长EMF支持 - Day2:生成代码

(略)在关注编辑支持和客户端模型的建立以前,咱们先看为模板项目进行代码生成。这是咱们目标的一个基础的需求,咱们想使用现有的EMF code generator。因此在che里面复用已有的Eclipse架构是可行的吗?java

让咱们快速的看一哈EMF代码生成器如何被触发。默认的方式是利用Eclipse IDE里的UI。除此以外,EMF提供就一个Java API来运行代码生成。这听上去很吸引人,由于Che的server构件也是用java编写的。也就是说咱们能够为Che的server写一个封装的功能:由Che的浏览器IDE触发并调用EMF的API来生成代码。但,等一下,EMF是被设计运行在OSGi运行时环境的。此话,他使用了一些扩展点(如注册表打包)。虽然用Java能够直接调用EMF的代码生成器,但咱们须要手动将这些东西链接起来。在这种场景下,在没有OSGi的状况下设置类的路径就像噩梦。另外一个坏处是咱们可能须要在咱们的服务器端配置EMF库,这会使更新变得繁琐。docker

幸运的是,有一个很简单的方式来整合现有的代码生成器。Eclipse的桌面IDE提供了一个在命令行执行的无头应用程序。用以下的指令,你能够为make it happen样例生成代码。shell

$ /eclipse/eclipse \
-noSplash \ # do not show the eclipse splash screen
-data /path/to/data/dir \ # the path to be our current project
-application org.eclipse.emf.codegen.ecore.Generator \ # the application id to execute
-model \ # generate EMF model classes
-edit \ # generate EMF edit bundle
/path/to/modelname.genmodel # the path to the genmodel file

那么咱们如何将这一段代码整合进Che里面?好消息是咱们能够直接把Eclipse部署到一个工做空间里。Che里的工做空间不单单是托管代码的目录。它一样也是一个docker的容器并包含一些工具。所以若是咱们将一个Eclipse Modeling Tools Edition安装进咱们的工做空间。咱们就能用命令行调用EMF的API生成代码。浏览器

首先,咱们须要在Che的工做空间容器中安装Eclipse。做为一个基于Linux image的容器,咱们能够直接用shell去下载和提取最新的Eclipse Modeling Tools。下载连接能够由官网下载(复制Linux 32/64 bit的连接)。若是界面里没有shell的话,点击低端的terminal便可打开,实际的shell指令以下:服务器

$ sudo su # gain super user privileges (become root)
$ cd / # switch to the root directory
$ wget ${Download Link} -o eclipse.tar.gz # download eclipse
$ tar xfv eclipse.tar.gz # extract the downloaded tar.gz file

而后你就能够用下面的命令行出发EMF code generator了。架构

$ /eclipse/eclipse \
-noSplash \
-data /projects/makeithappen \
-application org.eclipse.emf.codegen.ecore.Generator \
-model \
-edit \
/projects/makeithappen/org.eclipse.emf.ecp.makeithappen.model/model/task.genmodel

下一张截图展示了代码生成器在shell里打印的log。咱们而后就能够在IDE打开被生成的代码。这就意味着,咱们成功在che里面复用了EMF的代码生成器!app

图片描述

如今,咱们完成了从命令行启动code generator。让咱们为用户提供更便利的方式,而不是来本身输入这些复杂的指令。咱们想要使得这个代码生成的过程只需由一个点击触发。Che容许咱们本身定义一个‘custom command’。点击右上角的下拉菜单选择Edit commandseclipse

clipboard.png

而后点击'+',而后点Custom,如图所示填好右边的内容。你就能够看到Che里面多了这个指令(刚刚的右上角位置)。然鹅,最后一部分ganmodel的路径仍是静态的,
clipboard.png工具

如今,咱们就能够用一个click为一个模板项目生成代码了。咱们复用了现有的EMF code generator,也没有写过一行代码。可是,存在不少开放的问题须要提高。好比,咱们只能够为固定的项目生成代码,咱们仍然是在指定的模板上修改,没法真正改变模型。这些问题都须要咱们进一步优化,以后咱们还会涉及。如今下一部分的内容,咱们先关注如何建立一个custom stack是的咱们的这一部份内容可复用。这个目的是使得咱们这个下载了Eclipse实例的定义了自定义指令的工做关键能够从scratch获取。请期待~优化

相关文章
相关标签/搜索