gradle - 如何在 gradle 构建期间从 xcore 模型生成代码
问题描述
所以我试图在构建服务器中构建我的项目。我的 dsl 无法构建,因为它们依赖于我的 xcore 模型中的代码,并且来自 xcore 模型的生成代码不在构建服务器从中提取的存储库中。我不确定是什么真正启动了 xcore 模型上的代码生成。那么如何确保在 gradle 尝试构建我的其他 dsl 之前生成模型代码?
附加 xcore 项目的 build.gradle:
repositories {
jcenter()
}
configurations {
xtextTooling.extendsFrom xcore // alias xtextTooling to xcore to prevent confusion
}
test {
useJUnitPlatform()
}
dependencies {
testCompile "org.junit.jupiter:junit-jupiter-api:5.1.0"
testRuntime "org.junit.jupiter:junit-jupiter-engine:5.1.0"
testCompile "org.eclipse.xtext:org.eclipse.xtext.testing:${xtextVersion}"
compile "org.eclipse.xtext:org.eclipse.xtext:${xtextVersion}"
compile "org.eclipse.xtext:org.eclipse.xtext.xbase:${xtextVersion}"
compile 'org.eclipse.emf:org.eclipse.emf.ecore.xcore.lib:+'
compile group: 'org.eclipse.xtext', name: 'org.eclipse.xtext.ecore', version: '2.15.0'
xcore group: 'org.eclipse.emf', name: 'org.eclipse.emf.mwe2.lib', version: '2.9.1.201705291010'
xcore group: 'org.eclipse.emf', name: 'org.eclipse.emf.codegen', version: '2.14.0'
xcore 'org.eclipse.emf:org.eclipse.emf.codegen.ecore:+'
xcore 'org.eclipse.emf:org.eclipse.emf.codegen.ecore.xtext:+'
xcore 'org.eclipse.emf:org.eclipse.emf.ecore.xcore:1.3.1'
xcore 'org.eclipse.emf:org.eclipse.emf.ecore.xcore.lib:+'
xcore "org.eclipse.xtext:org.eclipse.xtext.ecore:${xtextVersion}"
}
xtext {
version = "${xtextVersion}"
languages {
ecore {
setup = 'org.eclipse.xtext.ecore.EcoreSupport'
}
codegen {
setup = 'org.eclipse.emf.codegen.ecore.xtext.GenModelSupport'
}
xcore {
setup = 'org.eclipse.emf.ecore.xcore.XcoreStandaloneSetup'
generator.outlet.producesJava = true
}
}
}
sourceSets {
main {
resources {
exclude '**/*.xcore'
}
java {
srcDir 'build/xcore/main'
}
}
}
clean {
delete 'build/xcore/main'
}
我看到了一些 xtext 区域略有不同的示例:
xtext {
version = "${xtextVersion}"
languages {
ecore {
setup = 'org.eclipse.xtext.ecore.EcoreSupport'
}
codegen {
setup = 'org.eclipse.emf.codegen.ecore.xtext.GenModelSupport'
}
xcore {
setup = 'org.eclipse.emf.ecore.xcore.XcoreStandaloneSetup'
generator.outlet.producesJava = true
output {
dir 'build/xcore/main'
producesJavaFor sourceSets.main
}
}
}
}
但是如果我尝试使用它,我会收到 gradle 错误:
在 org.xtext.gradle.tasks.Language 类型的对象上找不到参数 [build_..._run_closure...] 的方法 output()
解决方案
推荐阅读
- javascript - ReferenceError: con 未定义
- excel - Excel VBA:将图片移动到另一张纸而不复制/粘贴
- java - 如何在 Java/Kotlin 中覆盖另一个类实例的方法?
- azure - 在 Python 中使用 Azure Face Api,如果在视频流中检测到同一个人,如何返回单个 faceId 或一组 FaceId?
- pyomo - 如何使用 pyomo 设置 scip 选项?
- sql - 如何根据每个项目组的排序项目数使用 SQL 插入或更新列
- excel - 从另一个工作簿调用活动 VBA 脚本
- javascript - 以编程方式更改 Facebook 可编辑 div 输入区域中的输入值
- r - 调用 gsub() 后 full_join() 无法正常工作 - 产品中产生重复的行
- c - 如何在c中打印文件每一行的一部分