问题标签 [maven-scr-plugin]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1896 浏览

java - 使用 pax-exam 时测试使用 maven-scr-plugin 创建的服务时出现问题

我设置了一个非常简单的“HelloWorld”服务来演示我的问题。它使用 maven-scr-plugin 生成服务描述符并进行 pax-exam 单元测试。但是当我尝试运行“mvn clean test”时,它会阻塞一段时间,然后给我这个错误:

如果我运行 'mvn -DskipTests=true package' 然后运行 ​​'mvn test' (没有清理)它可以工作。不同之处似乎是在我的 META-INF/M ANIFEST.MF 文件中添加了这一行:

有谁知道是否有办法确保在构建过程的早期添加此行,以便“mvn clean test”通过?还是我可能做错了什么?


作为参考,这里是 pom.xml、服务和单元测试。

HelloWorld 实现类

单元测试

0 投票
1 回答
1684 浏览

servlets - OSGi 声明式服务注入

我正在尝试在本地 Glassfish 服务器上使用声明式服务来做一个简单的 OSGi 服务。提供的插件始终处于活动状态。

我在注入使用我的服务的 servlet 时遇到了麻烦,调用 servlet 时引用为空,因为它与注入服务引用的对象不同。

我通过在我的引用设置器中放置一个断点来测试它,我看到我的服务被注入了,但是当我单击将我的 servlet 调用到我的应用程序中的按钮时,服务引用为空,因为它不是同一个对象(即获取注入 servlet_Instance #1 但调用 servlet_Instance #2 上的方法。我一定遗漏了一点细节,因为我可以在做的时候找到并使用我的服务

用于生成我的 XMLs 文件的插件:maven-scr-plugin

这是我的服务班

生成的 XML 是

我的小服务程序是

生成的 XML

我也尝试过,但没有运气,因为似乎没有找到我的 servlet(错误 404 - 请求的资源()不可用。),正如 Peter Kriens 在那里写的那样:如何使用 OSGi HTTP 服务中的 OSGi 服务

所以我像这样修改了我的servlet:

生成的 XML 是

我从我的 JSP 访问 servlet

为了测试上述内容,我在我部署的包 org.apache.felix.http.api-2.2.1、org.apache.felix.http.whiteboard-2.2.1 中进行了测试,就像在帖子中一样。没查到有没有开关。

我还检查了 org.apache.felix.webconsole-4.2.0-所有捆绑包,服务已经启动并运行,它说我的消费者捆绑包正在使用它。

0 投票
2 回答
2334 浏览

aem - maven-scr-plugin 失败并出现 SCRDescriptorException “无法扫描文件...... ASM 可能不支持类文件格式?”

使用以下依赖项(其中,捆绑包应该安装到 AEM 6.1)

运行时是 java8

  • maven-scr-plugin 1.15.0
  • org.apache.felix.scr.annotations:1.9.8
  • org.apache.felix.scr.ds-注释:1.2.8

我得到了这个例外

原因:org.apache.felix.scrplugin.SCRDescriptorException:无法扫描类文件:...(ASM 可能不支持类文件格式?)在 org.apache.felix.scrplugin.helper.ClassScanner.processClass(ClassScanner. java:219) 在 org.apache.felix.scrplugin.helper.ClassScanner.scanSources(ClassScanner.java:146) 在 org.apache. .felix.scrplugin.SCRDescriptorGenerator.execute(SCRDescriptorGenerator.java:146) at org.apache.felix.scrplugin.mojo.SCRDescriptorMojo.execute(SCRDescriptorMojo.java:221) ... 22 更多

原因:org.objectweb.asm.ClassReader.(Unknown Source) at org.objectweb.asm.ClassReader.(Unknown Source) at org.objectweb.asm.ClassReader.(Unknown Source) 处的 java.lang.IllegalArgumentException。 apache.felix.scrplugin.helper.ClassScanner.processClass(ClassScanner.java:201)

有问题的类根本不包含任何 osgi 注释,而只是导入到其他一些 @Component 注释类中。

有没有人遇到过这个并找到了解决方案?

0 投票
1 回答
162 浏览

osgi - Maven SCR 插件参考注解目标属性用法

您可以通过@Reference 的“target”属性过滤掉可用的实现,如下所示:

@Reference(target="(k1=v1)") ISomeServiceContract svc1;

我的问题是关于过滤器值。文档对此几乎没有提及,我很困惑。

http://felix.apache.org/documentation/subprojects/apache-felix-maven-scr-plugin/scr-annotations.html#reference为“目标”属性声明以下内容:

“用于选择要提供的特定服务的服务目标过滤器”。

SCR 插件中的过滤器值是否具有特定的语法(即为什么我什至需要括号周围的键等于值规范)?它是否允许您指定诸如“(k1=v1&&k2=v2)”或“(k1=v1||k2=v2&&(...))”之类的内容。

0 投票
1 回答
1483 浏览

java - 在简单的 AEM 应用程序中使用 WCMUsePojo 时出现 java.lang.VerifyError

以下是我在执行mvn clean install项目时遇到的错误。这是我尝试使用 WCMUse 的 AEM 6.1 中的一个简单 AEM 应用程序。

下面是我使用 WCMUsePojo 的代码。

如果我删除 extends WCMUsePojo 没有错误并且构建运行良好。

请在我正在使用的 pom 下方找到:

0 投票
2 回答
661 浏览

osgi - 使用 maven-scr-plugin 和 OSGI R6 注释生成元类型描述

我正在使用 maven-scr-plugin 生成组件和元类型描述。我正在从 org.apache.felix.scr 注释迁移到 org.osgi.service.component 注释。

Carsten Ziegeler 在这里写了一篇关于如何进行迁移的优秀博客。但是,这并没有解释如何从组件注释中直接生成元类型描述。相反,我必须为每个组件单独配置@interface,并重写所有组件激活器(至少,利用那些额外的@interface 类的附加值)。

我仍然可以使用 maven-scr-plugin 通过添加对org.apache.felix.scr.ds-annotations. 但是,maven-scr-plugin 仅在显式打开时输出元类型信息。使用 felix 注释,注释中的专用参数metatype=true@Component用于启用元类型生成。@Component但是,这样的参数在 OSGi 版本的注解中不可用。

有没有办法强制 maven-scr-plugin 生成元类型描述,或者我可以让 maven-bundle-plugin(或 bndtools)基于 osgi @Component 注释生成元类型数据,而不必定义一个每个组件的专用配置类?

0 投票
1 回答
250 浏览

maven - 谓词类在构建时中断 maven-scr 插件

我刚刚在我的项目中添加了一个自定义谓词类,而 Maven 构建刚刚因这个错误而中断。我需要添加更多依赖项吗?

我的示例 Java 类如下。我已经删除了业务逻辑,但即使是这个确切的文件也会导致错误。

0 投票
1 回答
1086 浏览

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

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

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

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

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

[错误] 无法在项目 carbon-kernel 上执行目标 org.apache.felix:maven-scr-plugin:1.7.4:scr (generate-scr-scrdescriptor):执行目标 org.apache.felix 的 generate-scr-scrdescriptor :maven-scr-plugin:1.7.4:scr failed: 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 作为依赖 项

现在我收到以下错误:

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

即使使用 maven 中央仓库中不可用的最新Equinox 版本(Photon),我也已经尝试过。

任何帮助深表感谢。

0 投票
2 回答
1410 浏览

java - Maven-src-plugin & Java 11 - 无法扫描类文件:

我正在尝试升级我的项目设置以在 Java 11 和 Sling 11 上运行。为此,我一直在尝试将我的 Maven 编译器升级到 3.8.0,但这似乎导致 maven-scr-plugin 出现问题;使其无法扫描仅包含枚举的简单类。

尝试构建 Maven 项目时遇到的错误如下:

这是我的大部分 POM 文件(已删除敏感信息):

我已经进行了一些故障排除,我的理解是 scr-plugin 根本不支持最新的 maven-compiler,因为一个比另一个早几个月发布(参见下面的链接):

maven-scr-插件

maven 编译器插件

我想知道是否有人遇到过类似的问题并想出了一些解决方法。谢谢!