我想使用生成器中的脚本名称来创建相应的 java 文件。例如,如果我的脚本文件是“WordCount.script”,我想创建一个“WordCount.java”文件。我发现以前的版本通过“resource.className”公开了这个,但它不适用于 2.3.1。
override void doGenerate(...
fsa.generateFile(magic_here + ".java", compile...)
您可以使用 ECoreUtil2 访问资源的规范化 URI。例如;
import static extension org.eclipse.xtext.EcoreUtil2.*
....
override void doGenerate(Resource input...
fsa.generateFile(input.normalizedURI.lastSegment + ".java", compile...)
或者,如果你想要一个绝对路径,你可以去掉lastSegment
. 您可能希望在生成之前从末尾删除文件名(例如“.mydsl”),例如:
fsa.generateFile(input.normalizedURI.replace(".mydsl", ".java), compile...
任何适合您的用例!
这是一个例子:
fsa.generateFile(
"src"+"/"+"com"+"/"+"stackoverflow"+"/"+"magic"+"/"+ //package
"more_magic"+".java", //class name
compile...)
该包将位于 src 文件夹中,并且将是 'com.stackoverflow.magic' 将文件导入项目后,您只会将其视为一个包。
资源具有封装文件名称的属性 URI。您可能希望访问它的#lastSegment 来计算Java 文件的名称。