OSGi / BND:如何从捆绑生成中排除类?

时间:2011-03-02 13:21:08

标签: java eclipse osgi bundle bnd

我有一个捆绑项目(Eclipse),它具有以下结构:

src/main/java
   Bundle source files here
src/test/java
   Bundle internal test cases

当我尝试制作包时,我得到一个错误,即存在一些“未解决的引用”。该错误是由内部测试类引起的。如何配置BND以忽略这些类?

将测试用例拆分为单独的项目不是一种选择,因为测试用例的粒度要比捆绑包提供的API更精细。

3 个答案:

答案 0 :(得分:4)

问题是Eclipse正在将src/main/javasrc/test/java编译到同一个输出目录中,可能是“bin”,而Bnd通过扫描bin文件夹中已编译的.class文件来工作。

您可以按照以下步骤解决此问题:

  1. 右键点击src/test/java,然后选择构建路径>配置输出文件夹...

  2. 点击“特定输出文件夹”并输入目录名称,例如bin_tests

  3. 现在Eclipse会将测试类编译成一个单独的文件夹,而Bnd只会看到真正的类。

答案 1 :(得分:1)

OSGi中单元测试的好方法是使用片段。因此,您可以将测试放在片段包中,并且不再存在此问题。此外,测试将可以访问所有类,而不仅仅是API,如果你将它们放在一个简单的包中就是这种情况

答案 2 :(得分:0)

我假设您的测试类包含在jar包文件中(不应该是这种情况)。检查jar文件的内容并修改包过程以不包括测试类(maven版本不包括src/test/java)。

当使用m2eclipse打包我的项目时,我有时会注意到这种行为,而从命令行运行maven效果很好。