maven-scr-plugin 不生成 java 10 的 OSGI-INF 文件夹结构
maven-scr-plugin does not generate OSGI-INF folder structure with java 10
有人知道 maven scr 插件是否与 java 10 兼容吗?
我正在尝试使用 java 10 构建一个基于 equinox osgi 的软件平台,但我无法获取 scr 插件来生成 OSGI-INF 文件夹结构(其中包含 serviceComponents.xml)目标文件夹。
结果 maven bundle 插件抱怨找不到 serviceComponents.xml 并且构建失败。
如果我将旧版本的 scr 插件 (1.7.4) 与 java 8.
一起使用,一切正常
如果我尝试使用 java 10 构建它,则会出现以下错误。
[ERROR] 无法执行目标 org.apache.felix:maven-scr-plugin:1.7.4:scr (generate-scr-scrdescriptor) 项目 carbon-kernel: 执行生成- scr-scrdescriptor of goal org.apache.felix:maven-scr-plugin:1.7.4:scr failed: org.apache.felix.scrplugin.tags.annotation.AnnotationTagProvider 不是 ImageIO SPI class
当我将 maven scr 插件版本升级到 1.26.0(最新)时,它抱怨 "No annotation processors found in classpath"
所以我根据 instructions 添加了 org.apache.felix.scr.annotations 作为依赖
Apache Felix Maven SCR Plugin Use
现在我收到以下错误:
[错误] 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 scr 插件与 java 10 和 felix scr 注释一起工作,方法是修改 felix.scr.generator-1.1.4 库,它是 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
class 之 felix.scr.generator-1.1.4
如 a similar issue 中所建议。
并且还更新了 maven 编译器插件源和目标配置。现在 OSGI-INF 文件夹结构是用修改后的 felix scr 生成器和 felix scr 插件生成的
以下是我发现的一些事实 - 希望这会对某人有所帮助,
为了在 Maven 构建期间自动生成 osgi 元数据 xml,可以使用以下任一注释模式。
- Felix SCR 注释
- OSGi 声明式服务 (DS) 注释
旧版本的 maven scr 插件使用了 felix scr 注释,但后来在文档中提到它已经开始支持来自 osgi 的 felix scr 注释和 DS 注释,这是用于生成 osgi meta 的标准注释集数据 xml。这是通过使用 scr 插件将相关依赖项添加到 pom 来完成的。然而,较新版本的 scr 插件似乎不支持 felix scr 注释,我从社区发现 scr 插件处于维护模式,最好使用仅支持 osgi 的 maven bundle 插件(没有 scr 插件) ds 注释。
由于我正在升级的软件平台中使用了 felix scr 注释,所以我有 2 个选项可以继续。要么修复旧版本 (1.7.4) scr 插件中的 java 10 个兼容性问题,要么将现有的 scr 注释用法转换为 osgi ds 注释,这样我就可以避免使用 scr 插件。我决定最好尝试保留现有的注释模式,因为更改它会影响那些使用带有自己的 osgi 包的平台。
有人知道 maven scr 插件是否与 java 10 兼容吗?
我正在尝试使用 java 10 构建一个基于 equinox osgi 的软件平台,但我无法获取 scr 插件来生成 OSGI-INF 文件夹结构(其中包含 serviceComponents.xml)目标文件夹。 结果 maven bundle 插件抱怨找不到 serviceComponents.xml 并且构建失败。
如果我将旧版本的 scr 插件 (1.7.4) 与 java 8.
一起使用,一切正常如果我尝试使用 java 10 构建它,则会出现以下错误。
[ERROR] 无法执行目标 org.apache.felix:maven-scr-plugin:1.7.4:scr (generate-scr-scrdescriptor) 项目 carbon-kernel: 执行生成- scr-scrdescriptor of goal org.apache.felix:maven-scr-plugin:1.7.4:scr failed: org.apache.felix.scrplugin.tags.annotation.AnnotationTagProvider 不是 ImageIO SPI class
当我将 maven scr 插件版本升级到 1.26.0(最新)时,它抱怨 "No annotation processors found in classpath"
所以我根据 instructions 添加了 org.apache.felix.scr.annotations 作为依赖 Apache Felix Maven SCR Plugin Use
现在我收到以下错误:
[错误] 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 scr 插件与 java 10 和 felix scr 注释一起工作,方法是修改 felix.scr.generator-1.1.4 库,它是 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
class 之 felix.scr.generator-1.1.4
如 a similar issue 中所建议。
并且还更新了 maven 编译器插件源和目标配置。现在 OSGI-INF 文件夹结构是用修改后的 felix scr 生成器和 felix scr 插件生成的
以下是我发现的一些事实 - 希望这会对某人有所帮助,
为了在 Maven 构建期间自动生成 osgi 元数据 xml,可以使用以下任一注释模式。
- Felix SCR 注释
- OSGi 声明式服务 (DS) 注释
旧版本的 maven scr 插件使用了 felix scr 注释,但后来在文档中提到它已经开始支持来自 osgi 的 felix scr 注释和 DS 注释,这是用于生成 osgi meta 的标准注释集数据 xml。这是通过使用 scr 插件将相关依赖项添加到 pom 来完成的。然而,较新版本的 scr 插件似乎不支持 felix scr 注释,我从社区发现 scr 插件处于维护模式,最好使用仅支持 osgi 的 maven bundle 插件(没有 scr 插件) ds 注释。
由于我正在升级的软件平台中使用了 felix scr 注释,所以我有 2 个选项可以继续。要么修复旧版本 (1.7.4) scr 插件中的 java 10 个兼容性问题,要么将现有的 scr 注释用法转换为 osgi ds 注释,这样我就可以避免使用 scr 插件。我决定最好尝试保留现有的注释模式,因为更改它会影响那些使用带有自己的 osgi 包的平台。