使用 Maven 构建 XText 2.0 和 XPand 1.1
我正在寻找使用 XText 2.0 的项目的示例 pom.xml
,尤其是“普通”maven 项目中的代码生成器 XPand 1.1。
我已经花时间在谷歌上,但我可能使用了错误的术语,或者没有例子。
我已经有一个 xtext 0.7.2 的工作 pom,我想将项目更新到 2.0。但我不知道从哪里开始。 我目前拥有的是 4 个 maven 项目的结构:
- mydsl
- mydsl.generator (未使用)
- mydsl.ui
- 应用程序(包含用于生成代码的 xpand 模板)
mydsl 项目是 xtext 0.7.2 项目,并在 (< code>mydsl) 提供生成的类作为 Maven 依赖项。
应用程序
有一个mwe
工作流程和xpand模板来生成源代码。这个项目有一个对 mydsl 的 Maven 依赖,
因为我还没有实现这么多的 gui 编辑器功能,我什至会扔掉所有的 xtext 东西(除了 grammer 和 xpand 模板)并构建一个完整的新 xtext 2个项目。
但我真的不知道如何为(新的)mydsl 项目构建 pom。
I am looking for an example pom.xml
for an project using XText 2.0, especially the code generator XPand 1.1 in a "plain" maven project.
I already spend time with google, but may I use the wrong terms, or there is no example.
I have an already working pom for xtext 0.7.2 and I want to update the project to 2.0. but I don't know where to start.
What I have at the moment is this structure of 4 maven projects:
- mydsl
- mydsl.generator (not used)
- mydsl.ui
- application (containing xpand templates to generate code)
The mydsl projects are xtext 0.7.2 projects with and additional pom in (mydsl
) that provides the generated classes as maven dependency.
The application
has a mwe
workflow and xpand template to generate source code. This project has a maven dependency to mydsl
Because I have not implemented so many gui editor functionality I would even except to throw all the xtext stuff away (except the grammer and xpand templates) and build a complete new xtext 2 project.
But I have really no glue how to build the pom for the (new) mydsl project.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我找到了真正的 maven xtext2 项目。
检查这个:
http://code.google.com/a/eclipselabs.org/p/喷雾/
I've found real maven xtext2 project.
Check this one:
http://code.google.com/a/eclipselabs.org/p/spray/
最棘手的部分之一是,在 XText2 语法项目中,
xtend-gen
文件夹中会有一个名为<>Generator.java
的文件。该文件不是由Generate<>.mwe2
工作流程创建的,而是由某些 Eclipse 魔法创建的。但是编译代码需要这个文件!所以我的解决方案是让 eclipse 生成该文件,然后像任何正常的手写类一样将其添加到 svn 中。
然后只需要将这个pom添加到项目中即可。所以maven也会启动工作流程。
但有一个缺点:工作流程还会生成相邻项目的类,
.ui
和.test
,因此它需要清单文件。为了克服 Maven 发布插件的麻烦,可以添加一个父 Maven 项目,其中包含 grammer 项目和两个虚拟项目.ui
和.test
包含 xtext 语法的项目的 Pom:
使用语法和 dsl 进行源代码生成的项目的 POM。这与 xtext 0.7.1 几乎相同。但有一点不同。 mwe 文件中使用的
MweReader
不再存在(自 xtext 1.0.1 起),因此需要使用org.eclipse.xtext.mwe.Reader
。该读取器不再将模型文件作为输入,而是将文件的路径作为输入。它还将其存储在所谓的“插槽”中。但这个槽是一个元素列表。因此需要将
中的FOR
更改为FOREACH
该项目中的 Mwe 工作流程
One of the most trickiest parts is that in an XText2 grammer project there will be a file in
xtend-gen
folder woth name<<project>>Generator.java
. That file is not created by theGenerate<<project>>.mwe2
workflow, instead it seams that it is created by some eclipse magic. But this file is needed to compile the code!So my solution is to let eclipse generate that file, and then add it to the svn like any normal hand written class.
Then one only need to add this pom to the project. So maven will start the Workflow too.
But there is one drawback: the workflow also generate the classes for the neighbour projects,
.ui
and.test
and therefor it needs there manifest files. To overcome the trouble of the maven release plugin, one could add a parent maven project, that contains the grammer project and the two dummies.ui
and.test
Pom of project containing the xtext grammer:
POM of the project that uses the grammer and a dsl for source code generation. This is nearly the same as it was for xtext 0.7.1. But with one difference. The
MweReader
used in the mwe file does not exit any more (since xtext 1.0.1) So one need to use theorg.eclipse.xtext.mwe.Reader
. This reader not longer take the model file as input, but the path to the file. And it also stores it in a so called "slot". But this slot is an LIST of elements. So one need to change: theFOR
in<expand value="templates::Main::main FOR model"/>
toFOREACH
Mwe workflow in that project