Xcore/xtext-gradle-plugin generates raw type references when invoked from Gradle [message #1716728] |
Mon, 07 December 2015 19:00 |
Dominik Klumpp Messages: 4 Registered: December 2015 |
Junior Member |
|
|
The problem:
I have a Xtext project with a Xcore model. In Eclipse, it works fine: the model is generated without problems.
The Xcore model contains among other things this fragment:
class RuleSystem {
contains Rule[] rules
}
class Rule {
}
I'm attempting to automate the generation using gradle and the xtext gradle plugin. I based my build.gradle on the example project at https://github.com/ghillairet/xcore-gradle-example. The build executes successfully, but the generated code differs in that it's missing type parameters:
Where Eclipse would generate
the gradle build generates:
etc. (for every such instance). This of course leads to a lot of warnings and some type errors.
The build.gradle file I'm using:
plugins {
id "org.xtext.xtext" version "0.3.26" // used to build Xcore model
id "org.xtend.xtend" version "0.4.14"
id "java"
id "eclipse"
}
group 'rapanui'
version '0.1.0-alpha.1'
sourceCompatibility = 1.8
targetCompatibility = 1.8
jar.manifest {
from 'META-INF/MANIFEST.MF'
}
repositories {
mavenCentral()
}
/* * * * * Configuration for Xcore * * * * *
Adapted from https://github.com/ghillairet/xcore-gradle-example */
xtext {
version = '2.9+'
encoding = 'UTF-8'
sources {
srcDir 'src'
}
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'
consumesJava = true
output {
dir = 'xcore-gen'
producesJavaFor sourceSets.main
}
}
}
}
/* Java source code. 'xcore-gen' is added by the Xcore config above. */
sourceSets {
main {
java {
srcDir 'src'
srcDir 'src-gen'
}
xtendOutputDir = 'xtend-gen'
}
}
configurations {
xtext.extendsFrom compile // for workflow execution
xtextTooling.extendsFrom xcore // alias xtextTooling to xcore to prevent confusion
}
dependencies {
compile 'org.eclipse.xtext:org.eclipse.xtext.xtext:2.9+'
compile 'org.eclipse.xtend:org.eclipse.xtend.lib:2.9.+'
compile 'org.eclipse.emf:org.eclipse.emf.ecore.xcore.lib:1.1.100'
xtext files('src')
xtext 'org.eclipse.emf:org.eclipse.emf.ecore.xcore:1.3.1'
xtext 'org.ow2.asm:asm:5.0+'
xtext 'org.eclipse.emf:org.eclipse.emf.codegen.ecore.xtext:1.2.0'
xtext 'org.eclipse.xtext:org.eclipse.xtext.xbase:2.9+'
xcore 'org.eclipse.text:org.eclipse.text:3.5.101'
xcore 'org.eclipse.core:org.eclipse.core.resources:3.7.100'
xcore 'org.eclipse.xtext:org.eclipse.xtext.ecore:2.9.0'
xcore 'org.eclipse.emf:org.eclipse.emf.codegen.ecore.xtext:1.2.0'
xcore 'org.eclipse.emf:org.eclipse.emf.common:2.11+'
xcore 'org.eclipse.emf:org.eclipse.emf.ecore.xmi:2.11+'
xcore 'org.eclipse.emf:org.eclipse.emf.ecore.xcore:1.3.1'
xcore 'org.eclipse.emf:org.eclipse.emf.ecore.xcore.lib:1.1.100'
xcore 'org.eclipse.emf:org.eclipse.emf.codegen:2.10+'
xcore 'org.eclipse.emf:org.eclipse.emf.codegen.ecore:2.11+'
}
/* delete generated code */
clean {
delete 'xcore-gen'
delete 'xtend-gen'
delete 'src-gen'
}
/* generate Xcore model using Xtext plugin */
task(generateModel).dependsOn xtextGenerate
/* language artifact generation by workflow execution */
task(generateLang, type: JavaExec) {
inputs.files "src/rapanui/dsl/GenerateDsl.mwe2", "src/rapanui/dsl/Dsl.xtext"
outputs.dir "src-gen"
dependsOn generateModel // model needs to be generated first
classpath configurations.xtext
main = "org.eclipse.emf.mwe2.launch.runtime.Mwe2Launcher"
args "src/rapanui/dsl/GenerateDsl.mwe2"
}
/* Language is generated before Xtend is compiled.
Since Xtend is integrated into the build task, this also integrates
generateLang and thus generateModel into the build task. */
compileXtend.dependsOn generateLang
eclipse.project {
natures 'org.eclipse.buildship.core.gradleprojectnature'
natures 'org.eclipse.pde.PluginNature'
natures 'org.eclipse.xtext.ui.shared.xtextNature'
buildCommand 'org.eclipse.buildship.core.gradleprojectbuilder'
buildCommand 'org.eclipse.xtext.ui.shared.xtextBuilder'
buildCommand 'org.eclipse.pde.SchemaBuilder'
buildCommand 'org.eclipse.pde.ManifestBuilder'
}
Any ideas on how to fix this? Am I missing any dependencies? Or doing something wrong?
Any help would be greatly appreciated.
[Updated on: Tue, 08 December 2015 15:32] Report message to a moderator
|
|
|
|
|
Re: Xcore/xtext-gradle-plugin generates raw type references when invoked from Gradle [message #1716818 is a reply to message #1716810] |
Tue, 08 December 2015 11:50 |
Dominik Klumpp Messages: 4 Registered: December 2015 |
Junior Member |
|
|
I just looked at the build output again, and found that hidden between the output of the generated java files there are a lot of lines like this:
A problem was detected while parsing a Java file
Line 151: Syntax error, parameterized types are only available if source level is 1.5 or greater
Line 151: Syntax error, parameterized types are only available if source level is 1.5 or greater
Line 153: Syntax error, parameterized types are only available if source level is 1.5 or greater
Line 155: Syntax error, parameterized types are only available if source level is 1.5 or greater
Line 157: Syntax error, parameterized types are only available if source level is 1.5 or greater
Any idea what causes this? I did set sourceCompatibility to 1.8 in the gradle file.
[Updated on: Tue, 08 December 2015 12:26] Report message to a moderator
|
|
|
|
|
Powered by
FUDForum. Page generated in 0.03742 seconds