Итак, я пытаюсь собрать свой проект на сервере сборки. Мои dsl не удается собрать, потому что они основаны на коде из моей модели xcore, а сгенерированный код из модели xcore отсутствует в хранилище, из которого извлекается сервер сборки. Я не уверен, что на самом деле запускает генерацию кода на модели xcore. Итак, как я могу гарантировать, что код модели будет сгенерирован до того, как Gradle попытается построить другие мои dsl?
Прикрепленный build.gradle для проекта xcore:
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