首页 > 解决方案 > 如何使用 Gradle 构建 Xtext Eclipse 插件?

问题描述

我用 Xtext 2.12 编写了一个 DSL,我的 Xtend 2.12 代码生成器从中生成 Java 8 代码。我正在使用 Eclipse Oxygen.3a。我首先创建了一个 Xtext 项目作为 Eclipse 插件,一切正常,但我希望现在所有的东西都由 Gradle 构建。为此,我在我的 Xtext 项目中添加了 Gradle 特性,并启动了“gradle init”来生成 build.gradle 和 settings.gradle 文件。我发现了 Xtext Gradle 插件(Xtext Builder 和 Xtend 编译器)的存在,并使用这些插件的文档编写了 build.gradle 脚本内容,但我并没有完全理解,而且毫不奇怪,我的 builder 不起作用。你能帮我正确设置这个构建器吗?

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. 要运行什么 Gradle 任务来启动 MWE2 启动器和代码生成器?

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

在此处输入图像描述

标签: eclipsegradlextextxtend

解决方案


也可以使用 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 中的某些依赖项。

不幸的是,我不能分享任何构建,因为它是专有代码,但我希望上面的解释对于任何需要自动化过程的人来说已经足够了。设置起来当然不是一件简单的事情。


推荐阅读