如何修复AEM 6.3 - Maven Archetype 12“未找到DS描述符”错误?

时间:2018-01-30 19:04:42

标签: maven osgi aem osgi-bundle sling

我们使用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项目会生成目标/类之外的描述符,通常是在target / scr-plugin生成的。修复此问题。 ,确保您使用的是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

中捕获

3 个答案:

答案 0 :(得分:0)

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

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

这个felix docs应该会让你快速使用官方注释。

答案 1 :(得分:0)

添加一个空的<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 :(得分:-1)

如果将这两个空条目添加到core/pom.xml

,问题就会消失
                    <Export-Package></Export-Package>
                    <Private-Package></Private-Package>