【问题标题】:How to fix AEM 6.3 - Maven Archetype 12 "No DS descriptor found" errors?如何修复 AEM 6.3 - Maven Archetype 12“未找到 DS 描述符”错误?
【发布时间】:2018-07-09 18:29:57
【问题描述】:

我们已经使用 Maven Archetype 12 创建了一个 AEM 6.3 项目。我们还没有编写任何代码,只是尝试构建导入 Eclipse 的空项目。

我们收到了文档中提到的错误: https://sling.apache.org/documentation/development/ide-tooling.html#why-do-i-get-an-error-about-no-ds-descriptor-found-at

No DS descriptor found at path target/classes/OSGI-INF/com.xxxxxxx.core.filters.LoggingFilter.xml

文档指出,“一个经常发生的情况是使用 maven-scr-plugin 的 Maven 项目在目标/类之外生成描述符,通常在目标/scr-plugin-generated。要解决这个问题,请确保您使用的是 maven-scr-plugin 1.15.0 或更高版本,并且您没有设置自定义 outputDirectory。"

不幸的是,我们开箱即用的生成项目似乎并非如此。描述符根本没有生成。将maven-scr-plugin 升级到1.15.0 甚至1.26.0 不会改变症状。

此问题的正确解决方法是什么?

环境版本信息

Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-03T12:39:06-07:00)
Maven home: C:\usr\apache-maven-3.5.0\bin\..
Java version: 1.8.0_131, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk1.8.0_131\jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"

我可以始终如一地重现错误。所有步骤都记录在这个2-minute video

【问题讨论】:

  • 需要一些信息来复制,您的 maven/java 版本是什么以及您是如何准确生成项目的?你运行了什么命令来得到错误?请添加您认为有助于重现的任何其他内容。你能始终如一地重现错误吗?即尝试以相同的方式创建一个新项目并得到相同的错误?
  • @AhmedMusallam 是的,我可以始终如一地重现该错误。这段 2 分钟视频中记录的所有步骤:youtu.be/zMwQMgqOxm0
  • java 和 maven 版本好吗?
  • @AhmedMusallam Maven 3.5.0,Java 1.8.0_131
  • 看起来 repo.adobe.com 已关闭...所以我目前无法创建 Archtype..

标签: maven osgi aem osgi-bundle sling


【解决方案1】:

添加一个空的<Export-Package></Export-Package> 最初是可行的,但是当我开始编写代码时就中断了。长期修复是以下几种情况的组合:

  1. 不要使用较新的 OSGI @Component 注解,继续使用 @SlingServlet

  2. 添加这个依赖

    <dependency>
        <groupId>org.apache.felix</groupId>
        <artifactId>org.apache.felix.scr.annotations</artifactId>
        <version>1.12.0</version>
    </dependency>
    
  3. 添加这个插件

        <plugin>
            <groupId>org.apache.felix</groupId>
            <artifactId>maven-scr-plugin</artifactId>
            <version>1.26.0</version>
            <executions>
                <execution>
                    <id>generate-scr-scrdescriptor</id>
                    <phase>compile</phase>
                    <goals>
                        <goal>scr</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>           
    
  4. 不确定这是否有所作为,但也升级到 Sling IDE Tools 1.2.0

【讨论】:

    【解决方案2】:

    如果将这两个空条目添加到core/pom.xml,问题就会消失:

                        <Export-Package></Export-Package>
                        <Private-Package></Private-Package>
    

    【讨论】:

      【解决方案3】:

      当在 OSGI 框架中没有实现声明式服务时,您会看到此错误。确保您看到 Apache Felix Declarative Services (org.apache.felix.scr) 捆绑包处于活动状态并在您的 felix 控制台中运行。

      或者(推荐),您可以使用 OSGI R6 的官方注释。根据felix docs 的说法,Apache Felix SCR 插件的开发处于维护模式。如果您使用的是官方 osgi 注释,则不需要 mvn-scr-plugin

      这个article 应该让您快速开始使用官方注释。

      【讨论】:

      • 示例项目已经在使用来自org.osgi.service.component.annotations 的新注解。但是你刚刚让我意识到引用 maven-scr-plugin 的文档已经过时了。
      • 是的,您可以尝试用 maven-bundle-plugin 替换 mvn-scr-plugin 并检查问题是否出现。
      猜你喜欢
      • 1970-01-01
      • 2017-03-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-05
      • 2019-02-09
      • 2015-05-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多