当前位置: 首页 > 知识库问答 >
问题:

使用gradle定义生成器代码位置,以生成xtext和xtend

蒙麒
2023-03-14

我正在尝试使用xText和xtendbuilding与gradle创建第一个项目。

我按照xText文档中的指导创建了语法,还创建了xtend生成器。

在eclipse中,代码按预期生成到src-gen文件夹。

当我创建gradle脚本时,也遵循http://xtext.github.io/xtext-gradle-plugin/xtext-builder.html来构建我的代码,而不是在它生成的构建文件夹中的src-gen文件夹中生成代码。

有没有办法在gradle中将这个文件夹从build改为src gen?我尝试了很多东西,但总是出错。

等级脚本的完整代码:

apply plugin: 'org.xtext.builder'

dependencies {
    xtextLanguages 'com.example.mylang:mylang:1.0.0-SNAPSHOT'
}

xtext {
    languages {
      mylang{
        setup = 'com.example.MyLangStandaloneSetup'
        generator.outlet.producesJava = true
      }
    }
    sourceSets {
      main {
        srcDir 'src/main/xtext'
    xtendOutputDir 'src-gen'
      }
    }
}

共有1个答案

侯池暝
2023-03-14

您可以在源集中配置它

sourceSets {
   main.xtendOutputDir = 'xtend-gen'
}

例如

plugins {
  id "org.xtext.xtend" version "1.0.21"
}

apply plugin: 'java'
apply plugin: 'org.xtext.xtend'

sourceSets {
  main.java.srcDirs = ['src','xtend-gen']
  main.xtendOutputDir = 'xtend-gen'
}

repositories {
    jcenter()
}

dependencies {
    // This dependency is exported to consumers, that is to say found on their compile classpath.
    compile 'org.eclipse.xtext:org.eclipse.xtext.xbase.lib:2.13.0'

}

或者是xtxt builder插件

buildscript {
    repositories {
        mavenLocal()
            jcenter()
    }
    dependencies {
        classpath 'org.xtext:xtext-gradle-plugin:1.0.21'
    }
}
plugins {
    id "org.xtext.builder" version "1.0.21"
}

repositories {
    mavenLocal()
    jcenter()
}

dependencies {
    xtextLanguages 'org.xtext.example.mydslfoo:org.xtext.example.mydslfoo:1.0.0-SNAPSHOT'
}

xtext {
    version '2.13.0'
    languages {
        mydslfoo {
            setup = 'org.xtext.example.mydslfoo.MyDslFooStandaloneSetup'
            generator {
                outlets {
                    HEROES {              
                    }
                    }
            }
        }
    }
    sourceSets {
        main {
            srcDir 'src'
            output {
                dir(xtext.languages.mydslfoo.generator.outlet, 'src-gen')
                }
        }
    }
  }
 类似资料:
  • 我用Xtext写了一个DSL。我想要的是执行DSL,从中获得一些好的结果。 我编写了myDslGenerator类,在xtend中实现接口IGenerator,以生成java代码,它运行良好。 我有两个问题; 解释器和代码生成器有什么区别?不都是为了执行DSL吗? 如何编写一个解释器?有没有一步一步的教程链接?我找到了许多使用xint生成代码的教程,但找不到任何用于编写解释器的教程。 谢谢你, 萨

  • 我是Xtext和Xtend的新手,正在尝试使用Xtext文档中的Xtext教程学习Xtext。我正在使用Xtext 2.14在Java10下运行Eclipse光子。我刚开始学习扩展教程,很早就遇到了一个问题。以下是我尝试使用代码生成器的代码: 这是我的语法文件: 我的问题是Eclipse说@Inject注释有问题,它说,这是在一个Eclipse Xtext项目中根据教程中的说明生成的。 我该如何从

  • Jboot 内置了一个简易的代码生成器,可以用来生成model层和Service层的基础代码,在生成代码之前,请先配置jboot.properties关于数据库相关的配置信息,Jboot 代码生成器会通过该配置去链接数据库。 jboot.datasource.type=mysql jboot.datasource.url=jdbc:mysql://127.0.0.1:3306/jbootdemo

  • 遵照此规范,在实际操作中,有许多重复。接下来推荐一款专为本规范量身定做的代码生成器 Laravel 5.x Scaffold Generator。 本扩展支持 5.1 ~ 5.5 版本的 Laravel。 只需要一个命令: 即可生成: $ php artisan make:scaffold Projects --schema="name:string:index,description:text:

  • 这类似于这个问题,但我们用Gradle代替。假设我们在构建脚本中直接使用jOOQ的代码生成,正如文档中所描述的那样。 有两个问题。首先,我们将向生成器配置中添加一个新的策略,这应该很简单: 然而,如果我们打印得到的XML配置,名称元素就会被神秘地省略(也会被悄悄地省略): 其次,可以使用什么机制来预编译生成器策略类()并使其在构建脚本的类路径中可用?这里有一个可能的问题:策略代码依赖于jOOQ的c

  • 我目前正在研究Xtext,以创建一个可重用的DSL和一个构建在DSL之上的工件。简化后的项目布局如下: Projecta:包含基于XText的DSL、feature-project、updatesite等。 projectb:使用projectA中的工件生成代码。 projectc:使用从projectb生成的代码 使用Maven和Xtext构建projectA不是问题(网上已经有几个例子了),但