2

我想使用生成器中的脚本名称来创建相应的 java 文件。例如,如果我的脚本文件是“WordCount.script”,我想创建一个“WordCount.java”文件。我发现以前的版本通过“resource.className”公开了这个,但它不适用于 2.3.1。

override void doGenerate(...

   fsa.generateFile(magic_here + ".java", compile...)
4

3 回答 3

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...

任何适合您的用例!

于 2013-05-17T09:34:22.280 回答
0

这是一个例子:

 fsa.generateFile(
    "src"+"/"+"com"+"/"+"stackoverflow"+"/"+"magic"+"/"+ //package
    "more_magic"+".java", //class name
    compile...)

该包将位于 src 文件夹中,并且将是 'com.stackoverflow.magic' 将文件导入项目后,您只会将其视为一个包。

于 2013-03-13T00:49:57.100 回答
0

资源具有封装文件名称的属性 URI。您可能希望访问它的#lastSegment 来计算Java 文件的名称。

于 2013-03-11T13:43:28.230 回答