【问题标题】:how to use the script xtext name in generator如何在生成器中使用脚本 xtext 名称
【发布时间】:2013-05-17 17:34:22
【问题描述】:

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

override void doGenerate(...

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

【问题讨论】:

    标签: xtext xtend


    【解决方案1】:

    您可以使用 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...
    

    任何适合您的用例!

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        这是一个例子:

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

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

        【讨论】:

        • 我认为问题在于如何获取您认为不变的信息。另外:为什么有人要以这种方式手动连接 constant 字符串?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多