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

时间:2019-02-25 14:32:01

标签: eclipse gradle xtext xtend

我已经用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 {

}
  1. sourceSets块应位于何处( xtext块)?
  2. xtext块内容正确吗?
  3. 我应该在xtend块中写些什么?甚至应该宣布吗?
  4. 要启动MWE2启动器运行的Gradle任务是什么? 然后是代码生成器?

以下是我的Eclipse项目组织的快照。 预先感谢您的宝贵时间!

enter image description here

1 个答案:

答案 0 :(得分:0)

也可以使用Eclipse PDE构建Xtext插件。我创建了一个专用的Eclipse部署以减小规模(最小化然后安装PDE,JDT和Xtext项目),并将其发布到工件存储库中。然后,只需编写Gradle任务(或插件)以拉下Eclipse,将其提取到构建目录,在Xtext Eclipse项目中进行复制(在复制之前使用Xtext Gradle插件来构建DSL)并最终调用在Eclipse中使用Java命令和AntRunner的Ant PDE任务。输出应该是一个基本的更新站点,您可以从该站点在本地安装插件,也可以发布到Artifact存储库以进行共享。

需要对Eclipse PDE构建过程有充分的了解。我在“插件开发环境指南>任务> PDE构建”部分的Eclipse帮助(https://help.eclipse.org/2020-06/index.jsp)中找到了我所需的大部分内容。

在Xtext版本升级期间,我遇到了一些问题,其中包含各种依赖项冲突和Eclipse错误。通常可以在Xtext开发团队的帮助下解决这些问题,然后在Gradle中强制某些依赖项。

不幸的是,我无法共享任何构建版本,因为它是专有代码,但是我希望上面的解释对需要自动化该过程的任何人都足够。当然,这不是一件容易的事。