所以我试图在构建服务器中构建我的项目。我的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错误:
找不到方法output()作为参数 [build _..._ run_closure ...]类型的对象 org.xtext.gradle.tasks.Language