gpt4 book ai didi

java - 使用 Xtext 生成的 Artifact

转载 作者:行者123 更新时间:2023-12-01 04:24:37 27 4
gpt4 key购买 nike

我目前正在研究 Xtext 以创建可重用的 DSL 和基于 DSL 构建的 Artifact 。简化后的项目布局如下:

  • projectA:包含基于 Xtext 的 DSL、功能项目、更新站点等。
  • projectB:使用projectA 中的 Artifact 生成代码。
  • projectC:使用从projectB生成的代码

使用 Maven 和 Xtext 构建项目 A 不是问题(网上已经有几个示例),但我不知道如何在项目 B 中使用项目 A 中的 DSL 并发布生成的代码以供项目 C 中使用。教程、文档和我能找到的每个示例都使用从项目 A 生成的 Eclipse 插件在项目 B 中生成代码。虽然这工作正常,但我想知道如何重用生成的代码。

是否可以仅将projectA 中的代码生成器与Maven 或类似的东西一起使用?我应该如何在持续集成服务器中使用 DSL?我是否已为此 headless 运行 Eclipse?

在我看来,我遗漏了一些明显的东西。因此,欢迎任何指示、提示、示例!

最佳答案

可以使用 Fornax MWE 运行程序从 Xtext 生成代码(遗憾的是在 Maven Central 中不可用,但在 http://www.fornax-platform.org/m2/repository 中可用)。

我们在基于 Tycho 的编译的 EMF-IncQuery ( corresponding pom file ) 中使用此方法

1. 配置 clean 插件以清空 src-gen 和 xtend-gen 文件夹(来自所有相关项目,例如 core、test 和 ui 项目) 2.使用Fornax插件执行MWE2工作流程 3.执行Xtend编译器(一些代码生成为Xtend类)

附加(主要是存储库和 Xtend 编译器版本)配置已添加到 parent pom我们的构建。

更新:回答了错误的问题;对不起。尝试不同的答案。

首先,您必须以可在 headless 环境中集成的方式实现您的语言/编译器(请参阅 xtend-maven-compiler 的打包方式)。

您的语法已经有一个生成器(实现 IGenerator 接口(interface)),用于接收模型和用于创建文件的帮助器类。如果使用 Xbase 语法,则该生成器由 Xtext 实现,否则您应该已经实现了它。

然后您可以提供一个使用此生成器的附加项目,从而能够生成此类代码。基本上,使用您的语言 StandaloneSetup/ headless 注入(inject)器来获取 IGenerator 实例(在新项目中),并添加一个根据您的构建进行参数化的新 FileSystemAccess 实例。

那么你的项目应该引用原始项目 - 例如它也可以是一个插件项目,用Tycho构建它,然后将其用作基于jar的编译器;或者您可以创建一个纯 Maven 插件,但在这种情况下您可能需要手动选择 Xtext 所需的传递依赖项。

对于 xtend-maven-compiler 插件,可以通过将所有依赖项复制到单个 jar 文件中来创建“uberjar”来解决此问题,然后引用它。丑陋,但它有效。

关于java - 使用 Xtext 生成的 Artifact ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18612197/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com