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

问题描述 投票:1回答:1

有谁知道maven scr插件是否与java 10兼容?

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

如果我使用旧版本的scr插件(1.7.4)和java 8,一切正常。

如果我尝试使用java 10构建它,则会发生以下错误。

[错误]无法在项目碳内核上执行目标org.apache.felix:maven-scr-plugin:1.7.4:scr(generate-scr-scrdescriptor):执行generate-scr-scrdescriptor of goal org.apache.felix :maven-scr-plugin:1.7.4:scr失败:org.apache.felix.scrplugin.tags.annotation.AnnotationTagProvider不是ImageIO SPI类

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

所以我根据Apache Felix Maven SCR Plugin Use中的说明添加了org.apache.felix.scr.annotations作为依赖项

现在我收到以下错误:

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

即使使用最新的equinox版本(Photon),我也试过这个版本,这在maven central repo中没有。

任何帮助深表感谢。

maven osgi equinox java-10 maven-scr-plugin
1个回答
1
投票

我可以通过修改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);

final Iterator<AnnotationTagProvider> serviceIter = ServiceLoader.load(AnnotationTagProvider.class, classLoader).iterator();

AnnotationTagProviderManager类felix.scr.generator-1.1.4中

正如a similar issue所建议的那样。

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

以下是我发现的一些事实 - 希望这会对某人有所帮助,

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

  • Felix SCR注释
  • OSGi声明性服务(DS)注释

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

由于felix scr注释用于我升级的软件平台,我有两个选项可以继续。要么修复scr插件的旧版本(1.7.4)中的java 10兼容性问题,要么将现有的scr注释用法转换为osgi ds注释,以便我可以避免使用scr插件。我决定更好地尝试保留现有的注释模式,因为更改它会影响那些使用自己的osgi包的平台。

© www.soinside.com 2019 - 2024. All rights reserved.