我想在生成器中使用script-name来创建相应的java文件。例如,如果我的脚本文件是“WordCount.script”,我想创建一个“WordCount.java”文件。我发现以前的版本通过“resource.className”公开了它,但它不适用于2.3.1。
override void doGenerate(...
fsa.generateFile(magic_here + ".java", compile...)
答案 0 :(得分:4)
您可以使用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...
无论适合您的使用情况!
答案 1 :(得分:0)
资源有一个属性URI,用于封装文件名。您可能希望访问它的#lastSegment以计算Java文件的名称。
答案 2 :(得分:0)
以下是一个例子:
fsa.generateFile(
"src"+"/"+"com"+"/"+"stackoverflow"+"/"+"magic"+"/"+ //package
"more_magic"+".java", //class name
compile...)
包将在src文件夹中,并且将是'com.stackoverflow.magic' 只有在将文件导入项目后,才会将其视为包。