从 Java 程序执行 Kermeta 文件

execute a Kermeta file from a Java program

我开发了一个生成 Kermeta XMI 文件的转换。

我的问题是我会在后台 运行 这个转换(.kmt 文件),也就是说从 Java 程序。

我尝试了很多代码,但总是没有结果。

有人可以帮助我吗? 预先感谢您的帮助。

运行 kermeta 程序取决于 Kermeta 的版本及其执行上下文。 使用 Kermeta 2,kmt 代码被编译成 scala。由于 scala 与 java 的兼容性,可以直接从 java 调用此 scala 代码。 您首先需要声明至少一个主要操作,以便生成适当的初始化操作。 假设您在 kermeta 代码中的 class "org::example::FooToBar" 中有一个方法 "transformFooToBar"。 使用标签将其声明为主要入口点

@mainClass "org::example::FooToBar"
@mainOperation "transformFooToBar"

这个主要操作必须只有字符串参数。 这将生成一个实用程序 scala class org.example.MainRunner,其中包含有用的初始化方法和一个可以从命令行调用的主要操作。

  • 案例 1/ 使用 Kermeta 2 代码从 eclipse 插件调用: 这是最简单的情况,调用方法org.example.MainRunner.init4eclipse()

在任何其他调用之前。然后调用你的主要方法 org.example.KerRichFactory.createFooToBar.transformFooToBar()

您可以调用任何其他 classes 或方法(即,即使参数不是 String)

这对于基于kermeta转换的eclipse构建工具来说非常方便。

  • 案例 2/Kermeta 2 代码从标准 java 应用程序调用(即不在 eclipse 插件中 运行ning) 那么初始化方法就是org.example.MainRunner.init()

案例 2 的常见陷阱:许多 运行 作为独立的转换仍然需要在其内部引用系统中使用 eclipse uri 方案来操纵模型。 IE。 platform:/plugin/... , platform:/resource/..., pathmap:/... ,或更复杂的 uri 映射(通常使用自定义协议)(您可以通过查看 xmi 文件轻松检查)作为文本) 在那种情况下,由于 Eclipse 平台不 运行 提供搜索机制,您需要手动提供等效的 URI 映射以将这些 URI 映射到您的本地系统 URI(即到文件:/... 或 jar:file:/ URI) 一种可能性是使用提供此类映射的 urimap.properties 文件。默认情况下,当 运行 在 eclipse 中运行 kermeta 程序时,会为当前的 eclipse 配置生成一个 urimap.properties。 将 kermeta 程序部署到另一台计算机或使用自定义部署包时,您必须 provide/compute 目标计算机的等效文件。

为了方便起见,您可以设置此 urimap.properties 文件的位置感谢系统 属性 "urimap.file.location"