我想在生成器中使用脚本名称来创建相应的java文件。例如,如果我的脚本文件是“WordCount.script”,我想创建一个“WordCount.java”文件。我发现以前的版本通过“resource.className”公开了这个版本,但它不适用于2.3.1。如何在生成器中使用脚本xtext名称
override void doGenerate(...
fsa.generateFile(magic_here + ".java", compile...)
我想在生成器中使用脚本名称来创建相应的java文件。例如,如果我的脚本文件是“WordCount.script”,我想创建一个“WordCount.java”文件。我发现以前的版本通过“resource.className”公开了这个版本,但它不适用于2.3.1。如何在生成器中使用脚本xtext名称
override void doGenerate(...
fsa.generateFile(magic_here + ".java", compile...)
该资源具有封装文件名称的属性URI。您可能需要访问它的#lastSegment来计算Java文件的名称。
下面是一个例子:
fsa.generateFile(
"src"+"/"+"com"+"/"+"stackoverflow"+"/"+"magic"+"/"+ //package
"more_magic"+".java", //class name
compile...)
包将在src文件夹,将是“com.stackoverflow.magic” 你只会看到它作为一个包,一旦你将这些文件导入一个项目。
您可以使用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...
任何适合你的使用情况!
我认为这个问题是关于如何获取您认为只是不变的信息。另外:为什么任何人都想用这种方法手动连接_constant_字符串? – 2013-05-18 07:44:10