【发布时间】:2011-02-12 01:11:21
【问题描述】:
要使用 javac 等工具从源代码生成包,您需要为其提供线性类路径。不幸的是,从 OSGi 的角度来看,它在某些仍然完全合法的情况下不起作用:
内嵌 JAR 的依赖项;
不同依赖项包含相同的包。
由于 javac 不理解 OSGi 元数据,我不能简单地理解类路径中的依赖关系。似乎有必要采用更精细的包粒度方法。
人们如何在自动化流程(持续集成)中使用 OSGi 来解决这个问题?奇怪的是,网上有很多关于如何创建捆绑 JAR(创建元数据,创建 JAR)的资源,前提是你有要放入的类/内部 JAR,但关于如何实际编译这些类的内容却很少。
让我们举个例子:我的包需要另外两个包来编译,它们都包含作为嵌入式 JAR 的 Xerces,但有两个不同且不兼容的版本。这不是问题,因为其中只有一个会导出一些 xerces 包,而我的包又会导入。这可能不是一个非常干净的情况,但可能会在 OSGi 容器中“合法”发生而不会出现问题。
现在,我该如何编译它?我无法将这两个依赖项放在我的类路径中(javac 找不到嵌入式 Xerces JAR),我也无法展平(两个版本的 Xerces 将发生冲突,可能未导出的版本会是第一个) .如果唯一的解决方案是在包级别而不是在完整的捆绑规模上创建“类路径”,那么 javac 根本不可用。
【问题讨论】: