1

我可能会问一个微不足道的问题。刚开始通过 Pax-Exam 学习 OSGi。

我所做的是一个 mvn archetype:generate for Hello World。我通过导入 PaxExam 相关的导入和其他内容更改了 AppTest.java。相应地更改了 pom.xml 以包含正确的依赖项。

当我做 mvn dependency:analyze 它说,

[警告] 发现未使用的已声明依赖项:[警告] org.ops4j.pax.exam:pax-exam-container-native:jar:3.4.0:test

当我做 mvn 测试时,我收到以下错误

测试错误:initializationError(com.test.maven.AppTest): No service org.osgi.framework.launch.FrameworkFactory found in META-INF/services on classpath

谁能帮助解决这个问题?我不知道如何在这里进行。

还是我想让苹果看起来像橘子?意思是,Pax Exam 只能与 src/test/resources/META-INF/services/ 中的 jar 一起使用?就像在 Apache Felix 或类似中安装一样。

4

1 回答 1

3

您应该做的第一件事是创建一个单独的测试项目,通常称为 itests。当您将 Pax 考试直接集成到您有要测试的源代码的项目中时,Pax 考试效果不佳。

所以创建一个这样的结构: /mymodule1 ... /mymodulen /itests

在 mymodule 项目中,您通常使用 maven 捆绑插件创建捆绑。您应该能够将它们安装到您的 OSGi 框架中。

然后在itests 目录中,将pax 考试依赖项放入pom 文件中。还将依赖项添加到您需要的自己的模块及其依赖项中。

然后在您的 pax 考试测试中,您在 @Comnfiguration 注释方法中定义您需要的模块。我在这里为 apache karaf 容器创建了一个 pax 考试示例

所以你看到在测试中我设置了 karaf 容器并添加了我想要测试的模块 pax-exam-sample8-ds。

用户文档中的入门部分将引导您完成示例项目:

不幸的是,我还没有为简单的 felix 和 equinox 容器设置这样一个简单的示例。因此,即使您打算使用普通容器,从 karaf 示例开始可能是一个好主意,因为它可能会让您更快地开始。

我一有空闲时间,就计划为普通的 OSGi 容器测试添加这样一个简单的示例测试项目。

于 2014-02-18T07:08:38.520 回答