【问题标题】:AEM 6.3, maven-bundle-plugin automate OSGi SCR metadata for OSGi annotated classesAEM 6.3,maven-bundle-plugin 为 OSGi 注释类自动化 OSGi SCR 元数据
【发布时间】:2018-02-07 19:06:14
【问题描述】:

我正在尝试对我的 OSGI R6 注释类进行单元测试。我发现我必须在 maven-bundle-plugin 中指定一些信息:http://felix.apache.org/documentation/faqs/apache-felix-bundle-plugin-faq.html#use-scr-metadata-generated-by-bnd-in-unit-tests --> 在单元测试中使用 BND 生成的 SCR 元数据。

如果我在 Intellij 中使缓存无效并重新启动并尝试再次执行我的测试,它会失败。如果我手动触发 maven-bundle-plugin 的 manifest 目标并运行测试成功,我可以自动生成元数据吗?

对于使用较旧的 felix src 注释为类编写的测试,此配置是否仍然有效?

【问题讨论】:

  • “但是我的 felix 给了我同样的老错误” - 你是什么意思?您能否重新编写您的问题以仅包含您所要求的内容?
  • 你说得对,我就是这么做的。
  • “Intellij 中的缓存无效”是什么意思?另外,您如何准确地运行您的测试?最重要的是,必须在测试运行之前生成元数据,这就是您提供的链接中的说明所做的。当通过 Maven 运行单元测试并最终在你的 CI/CD 上运行时,它成功了吗?还是失败?
  • 使缓存无效只会清除所有“临时文件”,例如生成的元数据。当我右键单击该类并选择“运行测试”时,它们会失败,但即使我使用“mvn clean install”,我也会收到同样的错误,抱怨我的 OSGI 注释类缺少元数据。
  • 在命令行使用mvn clean install构建项目后,请检查是否生成了SCR文件。你可以在target/classes/OSGI-INF 处罚款。您链接的页面中说明的步骤应该可以解决问题。

标签: mocking adobe aem sling


【解决方案1】:

我在 maven 配置中忘记了 <exportScr>true</exportScr>。现在我只需要在生命周期的后期运行我的测试,如下所述:https://github.com/Adobe-Marketing-Cloud/aem-project-archetype/blob/8aecf81ea5bb897a7d8dd5f241d5fcd561c36aa6/src/main/archetype/it.launcher/pom.xml,一切都会好起来的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-07
    • 2011-05-21
    • 1970-01-01
    • 2013-02-10
    • 2019-06-17
    • 2011-06-18
    • 2016-07-20
    • 1970-01-01
    相关资源
    最近更新 更多