如何在gradle构建期间从xcore模型生成代码

时间:2019-01-25 16:29:14

标签: gradle xtext 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错误:

  

找不到方法output()作为参数   [build _..._ run_closure ...]类型的对象   org.xtext.gradle.tasks.Language

0 个答案:

没有答案