如何将代码生成从xpand迁移到xtend(2)?

时间:2017-02-28 15:08:47

标签: java maven xtext xtend xpand

我们想要重新实现一个旧项目,它通过xtext和xpand使用代码生成。应该用Xtend(2)替换Xpand,并且应该删除旧的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插件来生成与旧项目相同的文件?

1 个答案:

答案 0 :(得分:0)

您可以使用依赖注入将其他内容导入您的班级

@Inject extension Xxx 

或者

@Inject Xxx xxx

然后从富字符串中调用它

'''«method»'''

没有默认的maven或工作流程组件,但编写一些gluecode

应该没问题