我们想要重新实现一个旧项目,该项目通过 xtext 和 xpand 使用代码生成。Xpand 应该被 Xtend(2) 替换,旧的 fornax 插件工作流执行应该被删除,替换为 xtext 和 xtend maven 插件。在旧项目中,我们使用了两个 maven 项目。第一个是 xtext 项目,它包含“ownLanguage”的语言定义,如果可能的话,应该只作为编译依赖项重新使用。第二个包含一个文件,其中包含所描述语言的模型、xpand 的旧工作流程和 xpt 文件。旧的工作流程使用这个 main.xpt 作为入口:
«IMPORT ownLanguage»
«DEFINE main FOR Model-»
«EXPAND AttributeInterfaces::attributeInterfaces FOR this»
«ENDDEFINE»
这里引用的 AttributesInterfaces.xpt
«IMPORT ownLanguage»
«DEFINE attributeInterfaces FOR Model»
«EXPAND attributeInterface FOREACH this.fieldDefs»
«ENDDEFINE»
«DEFINE attributeInterface FOR FieldDef»
«FILE "com/package/attributes/" + this.name.toFirstUpper() + "Attribute.java"»
package ....attributes;
public interface «this.name.toFirstUpper()»Attribute {
«this.type.mappedTypeNullable.fullName» get«this.name.toFirstUpper()»OrNull();
}
«ENDFILE»
«ENDDEFINE»
它用于从“fieldDef”列表中生成接口。此“fieldDef”列表取自 model.ownLaguage 文件,该文件使用依赖项中的语言。
有没有办法将这些 .xpt 文件重写为 .xtend 文件,以便在新项目中结合 xtext 和 xtend maven 插件使用这些文件来生成与旧项目中相同的文件?