【问题标题】:Trouble using M2Doc core generation API and SiriusServices使用 M2Doc 核心生成 API 和 SiriusServices 出现问题
【发布时间】:2021-02-12 06:30:54
【问题描述】:

我正在尝试使用核心生成 API 生成文档(如此处所述 https://www.m2doc.org/ref-doc/3.1.0/index.html#core-generation-api)。但我有以下错误: 找不到“isRepresentationDescriptionName()”服务。 (当我不以编程方式使用 genconf 时,它工作正常)。

我尝试使用 SiriusServiceConfigurator 添加 SiriusServices,但未能解决此问题。

或者可能是因为我没有添加引用 .aird 文件的 SiriusSession 选项?

我已经查看了如何在 newEnvironmentWithDefaultServices 中添加新服务,但它似乎不适用于 SiriusServices。

    final IQueryEnvironment queryEnvironment = org.eclipse.acceleo.query.runtime.Query
            .newEnvironmentWithDefaultServices(null);

    final Monitor monitor = new BasicMonitor.Printing(System.out);
    final ResourceSet resourceSetForModels = session.getTransactionalEditingDomain().getResourceSet();

    resourceSetForModels.createResource(modelUri);
    try (DocumentTemplate template = M2DocUtils.parse(resourceSetForModels.getURIConverter(), templateURI,
            queryEnvironment, classProvider, monitor)) {

        final Map<String, Object> variable = new HashMap<>();
                M2DocUtils.generate(template, queryEnvironment, variable, resourceSetForModels, outputURI, monitor);
            ...

谢谢

【问题讨论】:

    标签: m2doc


    【解决方案1】:

    Sirius 相关服务需要 Sirius Session。使用 .genconf 文件中的 SiriusSession 选项初始化会话。它应该设置为引用 .aird 文件的 URI。在M2DocUtils 类中,您有几种方法可以创建一个 IQueryEnvironment,该方法采用 String 的 Map,您可以在其中添加 SiriusSession 选项,例如:

    M2DocUtils.getQueryEnvironment(ResourceSet, URI, Map<String, String>)
    

    请注意,您的代码需要在 Eclipse 中运行,而不是独立的 java 程序。

    【讨论】:

      猜你喜欢
      • 2018-07-18
      • 1970-01-01
      • 2012-12-15
      • 1970-01-01
      • 2021-05-11
      • 2020-07-17
      • 2018-05-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多