要使用诸如javac之类的工具从源代码生成包,您需要为其提供线性类路径。不幸的是,它不会在某些情况下,从一个角度OSGi的点工作仍完全合法:javac是否足以构建OSGi包?
依赖与他们嵌入JAR;
不同依赖包含的相同包。
因为javac不理解OSGi元数据,所以我不能简单地只是在类路径中的依赖关系。更好的包装纹理方法似乎是必要的。
在自动化过程(持续集成)中使用OSGi的人如何解决这个问题?奇怪的是,Web上有很多关于如何创建bundle JAR(创建元数据,创建JAR)的资源,前提是您需要将类/内部JAR放入其中,但关于如何实际获取这些类的信息很少。
让我们举个例子:我的包需要两个其他包来编译,它们都包含Xerces作为嵌入式JAR,但是包含两个不同和不兼容的版本。这不是一个问题,因为只有其中一个导出一些xerces包,我的包依次导入。也许不是一个很干净的情况,但是可以在OSGi容器中“有法可依”地发生的事情没有问题。
现在,我该如何编译它?我不能把这两个依赖关系放在我的类路径中(javac中不会找到嵌入的Xerces JAR),我也不能将它们弄平(两个版本的Xerces会发生碰撞,也许没有导出的将是第一个) 。如果ony解决方案是在包级别创建“classpath”,而不是完整的包级别,则javac根本不可用。
也许我错了,但创造了应付的OSGi(m2eclipse的或来自菲利克斯一个)Maven插件仍然依靠的javac到底,给它一个线性的classpath喂上。 – Chatanga 2010-04-25 12:35:11