我已经用Xtext 2.12编写了DSL,而我的Xtend 2.12代码生成器由此生成了Java 8代码。我正在使用Eclipse Oxygen.3a。我首先创建了一个作为Eclipse插件的Xtext项目,并且一切正常,但是我现在想让Gradle构建一切。
为此,我将Gradle性质添加到了Xtext项目中,并启动了“gradle init”以生成build.gradle和settings.gradle文件。我发现了Xtext Gradle插件(Xtext Builder和Xtend Compiler)的存在,并使用这些插件的文档编写了build.gradle脚本内容,但是我并不了解所有内容,不足为奇的是,我的构建器无法正常工作。您能帮我正确设置此生成器吗?

plugins {
  id 'org.xtext.builder' version '2.0.3'
  id "org.xtext.xtend" version "2.0.3"
}

apply plugin: 'java'
apply plugin: 'org.xtext.xtend'
apply plugin: 'eclipse'

sourceSets {
  main.java.srcDirs = ['src','xtend-gen']
  main.xtendOutputDir = 'xtend-gen'
}

repositories {
  mavenCentral()
  jcenter()
}

dependencies {
  compile group: 'org.eclipse.xtend', name: 'org.eclipse.xtend.lib', version: '2.16.0'
  compile group: 'org.eclipse.xtext', name: 'org.eclipse.xtext', version: '2.16.0'
  compile group: 'org.eclipse.emf', name: 'org.eclipse.emf.codegen.ecore', version: '2.15.0'
  compile group: 'org.eclipse.xtext', name: 'org.eclipse.xtext.xtext.generator', version: '2.16.0'
  testCompile group: 'org.eclipse.xtext', name: 'org.eclipse.xtext.xbase.testing', version: '2.16.0'
}

xtext {
  languages {
    mapy {
      setup = 'com.mchp.mapy.MapyStandaloneSetup'
      generator.outlet.producesJava = true
    }
  }
  sourceSets {
    main {
      srcDirs 'src','xtend-gen'
      output {
        dir(xtext.languages.mapy.generator.outlet, 'src-gen')
      }
    }
  }
}

xtend {

}
  • sourceSets块应位于何处(内部或外部)。
    xtext块)?
  • xtext块内容正确吗?
  • 我应该写什么到xtend块中?还要宣布吗?
  • 要启动MWE2启动器并运行的Gradle任务是什么?
    然后是代码生成器?

  • 以下是我的Eclipse项目组织的快照。
    在此先感谢您的时间!

    eclipse - 如何使用Gradle构建Xtext Eclipse插件?-LMLPHP

    最佳答案

    也可以使用Eclipse PDE构建Xtext插件。我创建了一个专用的Eclipse部署来减小规模(最小化然后安装PDE,JDT和Xtext项目),并将其发布到 Artifact 存储库中。然后,只需编写Gradle任务(或插件)以拉下Eclipse,将其提取到构建目录,在Xtext Eclipse项目中进行复制(在复制之前使用Xtext Gradle插件来构建DSL)并最终调用在Eclipse中使用Java命令和AntRunner的Ant PDE任务。输出应该是一个基本的更新站点,您可以从该站点在本地安装插件,也可以发布到Artifact存储库以进行共享。
    需要对Eclipse PDE构建过程有充分的了解。我在“插件开发环境指南>任务> PDE Build”部分下的Eclipse帮助(https://help.eclipse.org/2020-06/index.jsp)中找到了所需的大部分内容。
    在Xtext版本升级期间,我遇到了一些问题,其中包含各种依赖性冲突和Eclipse错误。通常可以在Xtext开发团队的帮助下解决这些问题,然后在Gradle中强制使用某些依赖项。
    不幸的是,我无法共享任何构建版本,因为它是专有代码,但是我希望上面的解释对需要自动化该过程的任何人都足够。当然,这并不是一件容易的事情。

    10-08 02:52