我们想要重新实现一个旧项目,它通过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插件来生成与旧项目相同的文件?
答案 0 :(得分:0)
您可以使用依赖注入将其他内容导入您的班级
@Inject extension Xxx
或者
@Inject Xxx xxx
然后从富字符串中调用它
'''«method»'''
没有默认的maven或工作流程组件,但编写一些gluecode
应该没问题