maven scr插件不使用java 10生成OSGI-INF文件夹结构

maven scr插件不使用java 10生成OSGI-INF文件夹结构,maven,osgi,equinox,java-10,maven-scr-plugin,Maven,Osgi,Equinox,Java 10,Maven Scr Plugin,有人知道maven scr插件是否与Java10兼容吗 我试图用java 10构建一个基于equinox osgi的软件平台,但我无法让scr插件在目标文件夹中生成osgi-INF文件夹结构(其中包含serviceComponents.xml)。 结果maven bundle插件抱怨它找不到serviceComponents.xml,构建失败 如果我在Java8中使用旧版本的scr插件(1.7.4),一切都会正常工作 如果我尝试用Java10构建它,就会出现以下错误 [错误]未能在project

有人知道maven scr插件是否与Java10兼容吗

我试图用java 10构建一个基于equinox osgi的软件平台,但我无法让scr插件在目标文件夹中生成osgi-INF文件夹结构(其中包含serviceComponents.xml)。 结果maven bundle插件抱怨它找不到serviceComponents.xml,构建失败

如果我在Java8中使用旧版本的scr插件(1.7.4),一切都会正常工作

如果我尝试用Java10构建它,就会出现以下错误

[错误]未能在project carbon kernel上执行goal org.apache.felix:maven scr插件:1.7.4:scr(生成scr scrdescriptor):执行goal org.apache.felix:maven scr插件:1.7.4:scr失败:org.apache.felix.scrplugin.tags.annotation.AnnotationTagProvider不是ImageIO SPI类

当我将maven scr插件版本升级到1.26.0(最新版本)时,它抱怨“在类路径中找不到注释处理器”

因此,我根据中的说明添加了org.apache.felix.scr.annotations作为依赖项

现在我得到以下错误:

[错误]Manifest org.wso2.carbon:org.wso2.carbon.registry.core:bundle:4.4.34-SNAPSHOT:输入文件不存在:target/scr-plugin-generated/OSGI-INF/serviceComponents.xml

即使是最新的equinox版本(光子版),我也尝试过这一点,这在maven central repo中是不可用的


非常感谢您的帮助。

我可以通过修改felix.scr.generator-1.1.4库使maven scr插件与java 10和felix scr注释一起工作,该库是maven scr插件版本1.7.4的依赖项(正如我在问题中提到的,它与java 8一起工作得很好)

我换了

final Iterator<AnnotationTagProvider> serviceIter = ServiceRegistry.lookupProviders(AnnotationTagProvider.class, classLoader);
最终迭代器

并更新了maven编译器插件的源和目标配置。现在,OSGI-INF文件夹结构是使用改进的felix scr生成器和felix scr插件生成的

以下是我发现的一些事实-希望这能帮助一些人

为了在maven构建期间自动生成osgi元数据XML,可以使用以下任一注释模式

  • Felix SCR注释
  • OSGi声明性服务(DS)注释
maven scr插件的旧版本使用了felix scr注释,但后来在文档中提到,它已经开始支持来自osgi的felix scr注释和DS注释,osgi是生成osgi元数据XML的标准注释集。这是通过使用scr插件向pom添加相关依赖项来实现的。然而,较新版本的scr插件似乎不支持felix scr注释,我从社区中发现,scr插件处于维护模式,最好使用只支持osgi ds注释的maven bundle插件(没有scr插件)


由于felix scr注释用于我正在升级的软件平台,因此我有两个选择继续。要么修复旧版本(1.7.4)的scr插件中的Java10兼容性问题,要么将现有的scr注释用法转换为OSGiDS注释,这样我就可以避免使用scr插件。我决定最好尝试保留现有的注释模式,因为更改它会影响那些使用自己的osgi捆绑包的平台的用户。

maven scr插件已经处于维护模式很长一段时间了。您可以使用maven bundle插件(以及OSGi R6规范ds注释)@awd我正在使用maven bundle插件。我可以在没有maven scr插件的情况下使用它吗?这意味着maven bundle插件可以生成xml元数据吗?您必须使用osgi r6注释而不是felix scr注释。maven-bundle-plugin可以从r6注释生成元xml。这里有一篇文章我希望能帮助你入门-@awd,谢谢你提供的信息。但我认为改变注释方案是不可能的,因为还有其他用户使用这个平台并拥有自己的osgi包。如果你对此有任何其他想法,请告诉我。我的最终目标是用Java10构建和运行这个平台
final Iterator<AnnotationTagProvider> serviceIter = ServiceLoader.load(AnnotationTagProvider.class, classLoader).iterator();